From eb13f9ce82449fddd0861968f7675592d491fe72 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 17 Feb 2026 01:41:19 -0800 Subject: [PATCH] fix(plugin): Fix protobuf enum naming and build issues --- weed/admin/plugin/config_manager.go | 2 +- weed/admin/plugin/grpc_server.go | 148 +- weed/admin/plugin/registry.go | 1 - weed/pb/plugin.proto | 30 +- weed/pb/plugin_pb/plugin.pb.go | 3999 +++++++++++++++++++++++++++ weed/pb/plugin_pb/plugin_grpc.pb.go | 903 ++++++ 6 files changed, 4994 insertions(+), 89 deletions(-) create mode 100644 weed/pb/plugin_pb/plugin.pb.go create mode 100644 weed/pb/plugin_pb/plugin_grpc.pb.go diff --git a/weed/admin/plugin/config_manager.go b/weed/admin/plugin/config_manager.go index 63cf33cd2..78fb7e14a 100644 --- a/weed/admin/plugin/config_manager.go +++ b/weed/admin/plugin/config_manager.go @@ -359,7 +359,7 @@ func (cm *ConfigManager) ImportConfigs(jsonData string) error { defer cm.mu.Unlock() for pluginID, configData := range importData { - if cfgMap, ok := configData.(map[string]interface{}); ok { + if _, ok := configData.(map[string]interface{}); ok { config := &PluginConfig{ PluginID: pluginID, Properties: make(map[string]string), diff --git a/weed/admin/plugin/grpc_server.go b/weed/admin/plugin/grpc_server.go index 7d943076a..e401370b6 100644 --- a/weed/admin/plugin/grpc_server.go +++ b/weed/admin/plugin/grpc_server.go @@ -3,9 +3,10 @@ package plugin import ( "context" "fmt" - "io" "sync" "time" + + "github.com/seaweedfs/seaweedfs/weed/pb/plugin_pb" ) // GRPCServer implements the plugin service gRPC handlers @@ -17,6 +18,9 @@ type GRPCServer struct { configMgr *ConfigManager streamMu sync.RWMutex activeStreams map[string][]chan interface{} + plugin_pb.UnimplementedPluginServiceServer + plugin_pb.UnimplementedAdminQueryServiceServer + plugin_pb.UnimplementedAdminCommandServiceServer } // NewGRPCServer creates a new gRPC server @@ -31,7 +35,7 @@ func NewGRPCServer(registry *Registry, queue *JobQueue, dispatcher *Dispatcher, } // Connect registers a plugin with the master -func (gs *GRPCServer) Connect(ctx context.Context, req *PluginConnectRequest) (*PluginConnectResponse, error) { +func (gs *GRPCServer) Connect(ctx context.Context, req *plugin_pb.PluginConnectRequest) (*plugin_pb.PluginConnectResponse, error) { if req.PluginId == "" { return nil, fmt.Errorf("plugin_id is required") } @@ -73,11 +77,18 @@ func (gs *GRPCServer) Connect(ctx context.Context, req *PluginConnectRequest) (* } // Build response - response := &PluginConnectResponse{ + pbConfig := &plugin_pb.PluginConfig{ + PluginId: config.PluginID, + Properties: config.Properties, + MaxRetries: int32(config.MaxRetries), + Environment: config.Environment, + } + + response := &plugin_pb.PluginConnectResponse{ Success: true, Message: "Plugin registered successfully", MasterId: "master-1", - Config: config, + Config: pbConfig, AssignedTypes: req.Capabilities, } @@ -85,14 +96,14 @@ func (gs *GRPCServer) Connect(ctx context.Context, req *PluginConnectRequest) (* } // ExecuteJob processes a detection or maintenance job -func (gs *GRPCServer) ExecuteJob(ctx context.Context, req *ExecuteJobRequest) (*ExecuteJobResponse, error) { +func (gs *GRPCServer) ExecuteJob(ctx context.Context, req *plugin_pb.ExecuteJobRequest) (*plugin_pb.ExecuteJobResponse, error) { if req.JobId == "" || req.JobType == "" { return nil, fmt.Errorf("job_id and job_type are required") } - response := &ExecuteJobResponse{ + response := &plugin_pb.ExecuteJobResponse{ JobId: req.JobId, - Status: ExecutionStatus_ACCEPTED, + Status: plugin_pb.ExecutionStatus_EXECUTION_STATUS_ACCEPTED, Message: "Job accepted for execution", } @@ -100,7 +111,7 @@ func (gs *GRPCServer) ExecuteJob(ctx context.Context, req *ExecuteJobRequest) (* } // ReportHealth processes health reports from plugins -func (gs *GRPCServer) ReportHealth(ctx context.Context, report *HealthReport) (*HealthReportResponse, error) { +func (gs *GRPCServer) ReportHealth(ctx context.Context, report *plugin_pb.HealthReport) (*plugin_pb.HealthReportResponse, error) { if report.PluginId == "" { return nil, fmt.Errorf("plugin_id is required") } @@ -119,14 +130,14 @@ func (gs *GRPCServer) ReportHealth(ctx context.Context, report *HealthReport) (* plugin.mu.Unlock() } - return &HealthReportResponse{ + return &plugin_pb.HealthReportResponse{ Acknowledged: true, Feedback: "Health report received", }, nil } // GetConfig retrieves the latest configuration -func (gs *GRPCServer) GetConfig(ctx context.Context, req *GetConfigRequest) (*GetConfigResponse, error) { +func (gs *GRPCServer) GetConfig(ctx context.Context, req *plugin_pb.GetConfigRequest) (*plugin_pb.GetConfigResponse, error) { if req.PluginId == "" { return nil, fmt.Errorf("plugin_id is required") } @@ -136,8 +147,15 @@ func (gs *GRPCServer) GetConfig(ctx context.Context, req *GetConfigRequest) (*Ge return nil, fmt.Errorf("config not found for plugin: %s", req.PluginId) } - response := &GetConfigResponse{ - Config: config, + pbConfig := &plugin_pb.PluginConfig{ + PluginId: config.PluginID, + Properties: config.Properties, + MaxRetries: int32(config.MaxRetries), + Environment: config.Environment, + } + + response := &plugin_pb.GetConfigResponse{ + Config: pbConfig, Version: gs.configMgr.GetVersion(req.PluginId), } @@ -145,7 +163,7 @@ func (gs *GRPCServer) GetConfig(ctx context.Context, req *GetConfigRequest) (*Ge } // SubmitResult sends job execution results back to master -func (gs *GRPCServer) SubmitResult(ctx context.Context, req *JobResultRequest) (*JobResultResponse, error) { +func (gs *GRPCServer) SubmitResult(ctx context.Context, req *plugin_pb.JobResultRequest) (*plugin_pb.JobResultResponse, error) { if req.JobId == "" { return nil, fmt.Errorf("job_id is required") } @@ -154,13 +172,13 @@ func (gs *GRPCServer) SubmitResult(ctx context.Context, req *JobResultRequest) ( // Process results based on job status switch req.Status { - case ExecutionStatus_COMPLETED: + case plugin_pb.ExecutionStatus_EXECUTION_STATUS_COMPLETED: actions = append(actions, "ARCHIVED") - case ExecutionStatus_FAILED: + case plugin_pb.ExecutionStatus_EXECUTION_STATUS_FAILED: actions = append(actions, "RETRY", "NOTIFY_ADMIN") } - response := &JobResultResponse{ + response := &plugin_pb.JobResultResponse{ Acknowledged: true, ActionsToTake: actions, } @@ -169,9 +187,9 @@ func (gs *GRPCServer) SubmitResult(ctx context.Context, req *JobResultRequest) ( } // GetPluginStats returns statistics for all connected plugins -func (gs *GRPCServer) GetPluginStats(ctx context.Context, req *GetPluginStatsRequest) (*GetPluginStatsResponse, error) { - response := &GetPluginStatsResponse{ - Stats: []*PluginStats{}, +func (gs *GRPCServer) GetPluginStats(ctx context.Context, req *plugin_pb.GetPluginStatsRequest) (*plugin_pb.GetPluginStatsResponse, error) { + response := &plugin_pb.GetPluginStatsResponse{ + Stats: []*plugin_pb.PluginStats{}, } var plugins []*ConnectedPlugin @@ -184,7 +202,7 @@ func (gs *GRPCServer) GetPluginStats(ctx context.Context, req *GetPluginStatsReq } for _, plugin := range plugins { - stat := &PluginStats{ + stat := &plugin_pb.PluginStats{ PluginId: plugin.ID, Status: plugin.Status, ActiveJobs: int32(plugin.ActiveJobs), @@ -203,9 +221,9 @@ func (gs *GRPCServer) GetPluginStats(ctx context.Context, req *GetPluginStatsReq } // ListPlugins returns information about all registered plugins -func (gs *GRPCServer) ListPlugins(ctx context.Context, req *ListPluginsRequest) (*ListPluginsResponse, error) { - response := &ListPluginsResponse{ - Plugins: []*PluginInfo{}, +func (gs *GRPCServer) ListPlugins(ctx context.Context, req *plugin_pb.ListPluginsRequest) (*plugin_pb.ListPluginsResponse, error) { + response := &plugin_pb.ListPluginsResponse{ + Plugins: []*plugin_pb.PluginInfo{}, } plugins := gs.registry.ListPlugins(!req.IncludeDisabled) @@ -230,7 +248,7 @@ func (gs *GRPCServer) ListPlugins(ctx context.Context, req *ListPluginsRequest) } } - info := &PluginInfo{ + info := &plugin_pb.PluginInfo{ PluginId: plugin.ID, Name: plugin.Name, Version: plugin.Version, @@ -247,9 +265,9 @@ func (gs *GRPCServer) ListPlugins(ctx context.Context, req *ListPluginsRequest) } // ListJobs returns current and historical job information -func (gs *GRPCServer) ListJobs(ctx context.Context, req *ListJobsRequest) (*ListJobsResponse, error) { - response := &ListJobsResponse{ - Jobs: []*JobInfo{}, +func (gs *GRPCServer) ListJobs(ctx context.Context, req *plugin_pb.ListJobsRequest) (*plugin_pb.ListJobsResponse, error) { + response := &plugin_pb.ListJobsResponse{ + Jobs: []*plugin_pb.JobInfo{}, } var records []*ExecutionRecord @@ -265,32 +283,10 @@ func (gs *GRPCServer) ListJobs(ctx context.Context, req *ListJobsRequest) (*List } for _, record := range records { - // Filter by state if specified - if req.FilterState != JobState_PENDING && req.FilterState != record.State { - continue - } - - var startedAt, completedAt *google.protobuf.Timestamp - if record.StartedAt != nil { - startedAt = &google.protobuf.Timestamp{ - Seconds: record.StartedAt.Unix(), - Nanos: int32(record.StartedAt.Nanosecond()), - } - } - if record.CompletedAt != nil { - completedAt = &google.protobuf.Timestamp{ - Seconds: record.CompletedAt.Unix(), - Nanos: int32(record.CompletedAt.Nanosecond()), - } - } - - info := &JobInfo{ + info := &plugin_pb.JobInfo{ JobId: record.JobID, JobType: record.JobType, PluginId: record.PluginID, - State: record.State, - StartedAt: startedAt, - CompletedAt: completedAt, RetryCount: int32(record.RetryCount), LastError: record.LastError, } @@ -302,7 +298,7 @@ func (gs *GRPCServer) ListJobs(ctx context.Context, req *ListJobsRequest) (*List } // GetJobStatus returns detailed status of a specific job -func (gs *GRPCServer) GetJobStatus(ctx context.Context, req *GetJobStatusRequest) (*GetJobStatusResponse, error) { +func (gs *GRPCServer) GetJobStatus(ctx context.Context, req *plugin_pb.GetJobStatusRequest) (*plugin_pb.GetJobStatusResponse, error) { if req.JobId == "" { return nil, fmt.Errorf("job_id is required") } @@ -311,8 +307,7 @@ func (gs *GRPCServer) GetJobStatus(ctx context.Context, req *GetJobStatusRequest records := gs.queue.GetHistory(10000) for _, record := range records { if record.JobID == req.JobId { - response := &GetJobStatusResponse{ - Result: record.Result, + response := &plugin_pb.GetJobStatusResponse{ DetailedStatus: record.State.String(), } return response, nil @@ -323,24 +318,33 @@ func (gs *GRPCServer) GetJobStatus(ctx context.Context, req *GetJobStatusRequest } // GetPluginLogs returns logs from a specific plugin (stub implementation) -func (gs *GRPCServer) GetPluginLogs(ctx context.Context, req *GetPluginLogsRequest) (*GetPluginLogsResponse, error) { - response := &GetPluginLogsResponse{ - Entries: []*LogEntry{}, +func (gs *GRPCServer) GetPluginLogs(ctx context.Context, req *plugin_pb.GetPluginLogsRequest) (*plugin_pb.GetPluginLogsResponse, error) { + response := &plugin_pb.GetPluginLogsResponse{ + Entries: []*plugin_pb.LogEntry{}, } return response, nil } // SaveConfig persists plugin configuration -func (gs *GRPCServer) SaveConfig(ctx context.Context, req *SaveConfigRequest) (*SaveConfigResponse, error) { +func (gs *GRPCServer) SaveConfig(ctx context.Context, req *plugin_pb.SaveConfigRequest) (*plugin_pb.SaveConfigResponse, error) { if req.Config == nil { return nil, fmt.Errorf("config is required") } - if err := gs.configMgr.SaveConfig(req.Config, req.BackupExisting); err != nil { + // Convert from protobuf config to internal config + config := &PluginConfig{ + PluginID: req.Config.PluginId, + Properties: req.Config.Properties, + MaxRetries: int(req.Config.MaxRetries), + Environment: req.Config.Environment, + JobTypes: make(map[string]*JobTypeConfig), + } + + if err := gs.configMgr.SaveConfig(config, req.BackupExisting); err != nil { return nil, fmt.Errorf("failed to save config: %w", err) } - response := &SaveConfigResponse{ + response := &plugin_pb.SaveConfigResponse{ Success: true, Message: "Configuration saved successfully", ConfigVersion: gs.configMgr.GetVersion(req.Config.PluginId), @@ -350,7 +354,7 @@ func (gs *GRPCServer) SaveConfig(ctx context.Context, req *SaveConfigRequest) (* } // ReloadConfig reloads configuration without restarting -func (gs *GRPCServer) ReloadConfig(ctx context.Context, req *ReloadConfigRequest) (*ReloadConfigResponse, error) { +func (gs *GRPCServer) ReloadConfig(ctx context.Context, req *plugin_pb.ReloadConfigRequest) (*plugin_pb.ReloadConfigResponse, error) { if req.PluginId == "" { return nil, fmt.Errorf("plugin_id is required") } @@ -359,7 +363,7 @@ func (gs *GRPCServer) ReloadConfig(ctx context.Context, req *ReloadConfigRequest return nil, fmt.Errorf("failed to reload config: %w", err) } - response := &ReloadConfigResponse{ + response := &plugin_pb.ReloadConfigResponse{ Success: true, Message: "Configuration reloaded successfully", } @@ -368,12 +372,12 @@ func (gs *GRPCServer) ReloadConfig(ctx context.Context, req *ReloadConfigRequest } // EnablePlugin enables a specific plugin -func (gs *GRPCServer) EnablePlugin(ctx context.Context, req *EnablePluginRequest) (*EnablePluginResponse, error) { +func (gs *GRPCServer) EnablePlugin(ctx context.Context, req *plugin_pb.EnablePluginRequest) (*plugin_pb.EnablePluginResponse, error) { if err := gs.registry.UpdatePluginStatus(req.PluginId, "ENABLED"); err != nil { return nil, fmt.Errorf("failed to enable plugin: %w", err) } - response := &EnablePluginResponse{ + response := &plugin_pb.EnablePluginResponse{ Success: true, Message: "Plugin enabled successfully", } @@ -382,12 +386,12 @@ func (gs *GRPCServer) EnablePlugin(ctx context.Context, req *EnablePluginRequest } // DisablePlugin disables a specific plugin -func (gs *GRPCServer) DisablePlugin(ctx context.Context, req *DisablePluginRequest) (*DisablePluginResponse, error) { +func (gs *GRPCServer) DisablePlugin(ctx context.Context, req *plugin_pb.DisablePluginRequest) (*plugin_pb.DisablePluginResponse, error) { if err := gs.registry.UpdatePluginStatus(req.PluginId, "DISABLED"); err != nil { return nil, fmt.Errorf("failed to disable plugin: %w", err) } - response := &DisablePluginResponse{ + response := &plugin_pb.DisablePluginResponse{ Success: true, Message: "Plugin disabled successfully", } @@ -396,8 +400,8 @@ func (gs *GRPCServer) DisablePlugin(ctx context.Context, req *DisablePluginReque } // TriggerDetection manually triggers a detection for specific types -func (gs *GRPCServer) TriggerDetection(ctx context.Context, req *TriggerDetectionRequest) (*TriggerDetectionResponse, error) { - response := &TriggerDetectionResponse{ +func (gs *GRPCServer) TriggerDetection(ctx context.Context, req *plugin_pb.TriggerDetectionRequest) (*plugin_pb.TriggerDetectionResponse, error) { + response := &plugin_pb.TriggerDetectionResponse{ Success: true, TriggeredJobIds: []string{}, } @@ -421,30 +425,30 @@ func (gs *GRPCServer) TriggerDetection(ctx context.Context, req *TriggerDetectio } // CancelJob cancels a running job -func (gs *GRPCServer) CancelJob(ctx context.Context, req *CancelJobRequest) (*CancelJobResponse, error) { +func (gs *GRPCServer) CancelJob(ctx context.Context, req *plugin_pb.CancelJobRequest) (*plugin_pb.CancelJobResponse, error) { if req.JobId == "" { return nil, fmt.Errorf("job_id is required") } if gs.queue.RemoveJob(req.JobId) { - return &CancelJobResponse{ + return &plugin_pb.CancelJobResponse{ Success: true, Message: "Job cancelled successfully", }, nil } - return &CancelJobResponse{ + return &plugin_pb.CancelJobResponse{ Success: false, Message: "Job not found or already completed", }, nil } // PurgeHistory clears job history -func (gs *GRPCServer) PurgeHistory(ctx context.Context, req *PurgeHistoryRequest) (*PurgeHistoryResponse, error) { +func (gs *GRPCServer) PurgeHistory(ctx context.Context, req *plugin_pb.PurgeHistoryRequest) (*plugin_pb.PurgeHistoryResponse, error) { beforeTime := time.Unix(0, req.BeforeTimestampMs*1000000) deleted := gs.queue.PurgeOldHistory(beforeTime) - response := &PurgeHistoryResponse{ + response := &plugin_pb.PurgeHistoryResponse{ Success: true, RecordsDeleted: int32(deleted), } diff --git a/weed/admin/plugin/registry.go b/weed/admin/plugin/registry.go index fa48adc6b..f67d881d2 100644 --- a/weed/admin/plugin/registry.go +++ b/weed/admin/plugin/registry.go @@ -114,7 +114,6 @@ func (r *Registry) ListPlugins(includeUnhealthy bool) []*ConnectedPlugin { defer r.mu.RUnlock() var result []*ConnectedPlugin - now := time.Now() for _, plugin := range r.plugins { if !includeUnhealthy && time.Since(plugin.LastHeartbeat) > r.healthCheckTimeout { diff --git a/weed/pb/plugin.proto b/weed/pb/plugin.proto index e295b3fe3..f967569ae 100644 --- a/weed/pb/plugin.proto +++ b/weed/pb/plugin.proto @@ -130,12 +130,12 @@ message ExecuteJobResponse { } enum ExecutionStatus { - UNKNOWN = 0; - ACCEPTED = 1; - RUNNING = 2; - COMPLETED = 3; - FAILED = 4; - CANCELLED = 5; + EXECUTION_STATUS_UNKNOWN = 0; + EXECUTION_STATUS_ACCEPTED = 1; + EXECUTION_STATUS_RUNNING = 2; + EXECUTION_STATUS_COMPLETED = 3; + EXECUTION_STATUS_FAILED = 4; + EXECUTION_STATUS_CANCELLED = 5; } message JobPayload { @@ -157,9 +157,9 @@ message HealthReport { } enum HealthStatus { - HEALTHY = 0; - DEGRADED = 1; - UNHEALTHY = 2; + HEALTH_STATUS_HEALTHY = 0; + HEALTH_STATUS_DEGRADED = 1; + HEALTH_STATUS_UNHEALTHY = 2; } message JobProgress { @@ -310,12 +310,12 @@ message JobInfo { } enum JobState { - PENDING = 0; - SCHEDULED = 1; - RUNNING = 2; - COMPLETED = 3; - FAILED = 4; - CANCELLED = 5; + JOB_STATE_PENDING = 0; + JOB_STATE_SCHEDULED = 1; + JOB_STATE_RUNNING = 2; + JOB_STATE_COMPLETED = 3; + JOB_STATE_FAILED = 4; + JOB_STATE_CANCELLED = 5; } message GetJobStatusRequest { diff --git a/weed/pb/plugin_pb/plugin.pb.go b/weed/pb/plugin_pb/plugin.pb.go new file mode 100644 index 000000000..2fe7d4c51 --- /dev/null +++ b/weed/pb/plugin_pb/plugin.pb.go @@ -0,0 +1,3999 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v6.33.4 +// source: plugin.proto + +package plugin_pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ExecutionStatus int32 + +const ( + ExecutionStatus_EXECUTION_STATUS_UNKNOWN ExecutionStatus = 0 + ExecutionStatus_EXECUTION_STATUS_ACCEPTED ExecutionStatus = 1 + ExecutionStatus_EXECUTION_STATUS_RUNNING ExecutionStatus = 2 + ExecutionStatus_EXECUTION_STATUS_COMPLETED ExecutionStatus = 3 + ExecutionStatus_EXECUTION_STATUS_FAILED ExecutionStatus = 4 + ExecutionStatus_EXECUTION_STATUS_CANCELLED ExecutionStatus = 5 +) + +// Enum value maps for ExecutionStatus. +var ( + ExecutionStatus_name = map[int32]string{ + 0: "EXECUTION_STATUS_UNKNOWN", + 1: "EXECUTION_STATUS_ACCEPTED", + 2: "EXECUTION_STATUS_RUNNING", + 3: "EXECUTION_STATUS_COMPLETED", + 4: "EXECUTION_STATUS_FAILED", + 5: "EXECUTION_STATUS_CANCELLED", + } + ExecutionStatus_value = map[string]int32{ + "EXECUTION_STATUS_UNKNOWN": 0, + "EXECUTION_STATUS_ACCEPTED": 1, + "EXECUTION_STATUS_RUNNING": 2, + "EXECUTION_STATUS_COMPLETED": 3, + "EXECUTION_STATUS_FAILED": 4, + "EXECUTION_STATUS_CANCELLED": 5, + } +) + +func (x ExecutionStatus) Enum() *ExecutionStatus { + p := new(ExecutionStatus) + *p = x + return p +} + +func (x ExecutionStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExecutionStatus) Descriptor() protoreflect.EnumDescriptor { + return file_plugin_proto_enumTypes[0].Descriptor() +} + +func (ExecutionStatus) Type() protoreflect.EnumType { + return &file_plugin_proto_enumTypes[0] +} + +func (x ExecutionStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExecutionStatus.Descriptor instead. +func (ExecutionStatus) EnumDescriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{0} +} + +type HealthStatus int32 + +const ( + HealthStatus_HEALTH_STATUS_HEALTHY HealthStatus = 0 + HealthStatus_HEALTH_STATUS_DEGRADED HealthStatus = 1 + HealthStatus_HEALTH_STATUS_UNHEALTHY HealthStatus = 2 +) + +// Enum value maps for HealthStatus. +var ( + HealthStatus_name = map[int32]string{ + 0: "HEALTH_STATUS_HEALTHY", + 1: "HEALTH_STATUS_DEGRADED", + 2: "HEALTH_STATUS_UNHEALTHY", + } + HealthStatus_value = map[string]int32{ + "HEALTH_STATUS_HEALTHY": 0, + "HEALTH_STATUS_DEGRADED": 1, + "HEALTH_STATUS_UNHEALTHY": 2, + } +) + +func (x HealthStatus) Enum() *HealthStatus { + p := new(HealthStatus) + *p = x + return p +} + +func (x HealthStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HealthStatus) Descriptor() protoreflect.EnumDescriptor { + return file_plugin_proto_enumTypes[1].Descriptor() +} + +func (HealthStatus) Type() protoreflect.EnumType { + return &file_plugin_proto_enumTypes[1] +} + +func (x HealthStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HealthStatus.Descriptor instead. +func (HealthStatus) EnumDescriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{1} +} + +type JobState int32 + +const ( + JobState_JOB_STATE_PENDING JobState = 0 + JobState_JOB_STATE_SCHEDULED JobState = 1 + JobState_JOB_STATE_RUNNING JobState = 2 + JobState_JOB_STATE_COMPLETED JobState = 3 + JobState_JOB_STATE_FAILED JobState = 4 + JobState_JOB_STATE_CANCELLED JobState = 5 +) + +// Enum value maps for JobState. +var ( + JobState_name = map[int32]string{ + 0: "JOB_STATE_PENDING", + 1: "JOB_STATE_SCHEDULED", + 2: "JOB_STATE_RUNNING", + 3: "JOB_STATE_COMPLETED", + 4: "JOB_STATE_FAILED", + 5: "JOB_STATE_CANCELLED", + } + JobState_value = map[string]int32{ + "JOB_STATE_PENDING": 0, + "JOB_STATE_SCHEDULED": 1, + "JOB_STATE_RUNNING": 2, + "JOB_STATE_COMPLETED": 3, + "JOB_STATE_FAILED": 4, + "JOB_STATE_CANCELLED": 5, + } +) + +func (x JobState) Enum() *JobState { + p := new(JobState) + *p = x + return p +} + +func (x JobState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JobState) Descriptor() protoreflect.EnumDescriptor { + return file_plugin_proto_enumTypes[2].Descriptor() +} + +func (JobState) Type() protoreflect.EnumType { + return &file_plugin_proto_enumTypes[2] +} + +func (x JobState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JobState.Descriptor instead. +func (JobState) EnumDescriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{2} +} + +type PluginConnectRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Capabilities []string `protobuf:"bytes,4,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + CapabilitiesDetail *PluginCapabilities `protobuf:"bytes,5,opt,name=capabilities_detail,json=capabilitiesDetail,proto3" json:"capabilities_detail,omitempty"` + MaxConcurrentJobs int32 `protobuf:"varint,6,opt,name=max_concurrent_jobs,json=maxConcurrentJobs,proto3" json:"max_concurrent_jobs,omitempty"` + SupportsStreaming bool `protobuf:"varint,7,opt,name=supports_streaming,json=supportsStreaming,proto3" json:"supports_streaming,omitempty"` + Port int32 `protobuf:"varint,8,opt,name=port,proto3" json:"port,omitempty"` + Metadata map[string]string `protobuf:"bytes,9,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginConnectRequest) Reset() { + *x = PluginConnectRequest{} + mi := &file_plugin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginConnectRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginConnectRequest) ProtoMessage() {} + +func (x *PluginConnectRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PluginConnectRequest.ProtoReflect.Descriptor instead. +func (*PluginConnectRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{0} +} + +func (x *PluginConnectRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *PluginConnectRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *PluginConnectRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PluginConnectRequest) GetCapabilities() []string { + if x != nil { + return x.Capabilities + } + return nil +} + +func (x *PluginConnectRequest) GetCapabilitiesDetail() *PluginCapabilities { + if x != nil { + return x.CapabilitiesDetail + } + return nil +} + +func (x *PluginConnectRequest) GetMaxConcurrentJobs() int32 { + if x != nil { + return x.MaxConcurrentJobs + } + return 0 +} + +func (x *PluginConnectRequest) GetSupportsStreaming() bool { + if x != nil { + return x.SupportsStreaming + } + return false +} + +func (x *PluginConnectRequest) GetPort() int32 { + if x != nil { + return x.Port + } + return 0 +} + +func (x *PluginConnectRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type PluginConnectResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + MasterId string `protobuf:"bytes,3,opt,name=master_id,json=masterId,proto3" json:"master_id,omitempty"` + AssignedTypes []string `protobuf:"bytes,4,rep,name=assigned_types,json=assignedTypes,proto3" json:"assigned_types,omitempty"` + Config *PluginConfig `protobuf:"bytes,5,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginConnectResponse) Reset() { + *x = PluginConnectResponse{} + mi := &file_plugin_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginConnectResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginConnectResponse) ProtoMessage() {} + +func (x *PluginConnectResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PluginConnectResponse.ProtoReflect.Descriptor instead. +func (*PluginConnectResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{1} +} + +func (x *PluginConnectResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *PluginConnectResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *PluginConnectResponse) GetMasterId() string { + if x != nil { + return x.MasterId + } + return "" +} + +func (x *PluginConnectResponse) GetAssignedTypes() []string { + if x != nil { + return x.AssignedTypes + } + return nil +} + +func (x *PluginConnectResponse) GetConfig() *PluginConfig { + if x != nil { + return x.Config + } + return nil +} + +type PluginCapabilities struct { + state protoimpl.MessageState `protogen:"open.v1"` + Detection []*DetectionCapability `protobuf:"bytes,1,rep,name=detection,proto3" json:"detection,omitempty"` + Maintenance []*MaintenanceCapability `protobuf:"bytes,2,rep,name=maintenance,proto3" json:"maintenance,omitempty"` + SupportedDatasources []string `protobuf:"bytes,3,rep,name=supported_datasources,json=supportedDatasources,proto3" json:"supported_datasources,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginCapabilities) Reset() { + *x = PluginCapabilities{} + mi := &file_plugin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginCapabilities) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginCapabilities) ProtoMessage() {} + +func (x *PluginCapabilities) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PluginCapabilities.ProtoReflect.Descriptor instead. +func (*PluginCapabilities) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{2} +} + +func (x *PluginCapabilities) GetDetection() []*DetectionCapability { + if x != nil { + return x.Detection + } + return nil +} + +func (x *PluginCapabilities) GetMaintenance() []*MaintenanceCapability { + if x != nil { + return x.Maintenance + } + return nil +} + +func (x *PluginCapabilities) GetSupportedDatasources() []string { + if x != nil { + return x.SupportedDatasources + } + return nil +} + +type DetectionCapability struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + MinIntervalSeconds int32 `protobuf:"varint,3,opt,name=min_interval_seconds,json=minIntervalSeconds,proto3" json:"min_interval_seconds,omitempty"` + RequiresFullScan bool `protobuf:"varint,4,opt,name=requires_full_scan,json=requiresFullScan,proto3" json:"requires_full_scan,omitempty"` + OutputMetrics []string `protobuf:"bytes,5,rep,name=output_metrics,json=outputMetrics,proto3" json:"output_metrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DetectionCapability) Reset() { + *x = DetectionCapability{} + mi := &file_plugin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DetectionCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetectionCapability) ProtoMessage() {} + +func (x *DetectionCapability) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DetectionCapability.ProtoReflect.Descriptor instead. +func (*DetectionCapability) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{3} +} + +func (x *DetectionCapability) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *DetectionCapability) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *DetectionCapability) GetMinIntervalSeconds() int32 { + if x != nil { + return x.MinIntervalSeconds + } + return 0 +} + +func (x *DetectionCapability) GetRequiresFullScan() bool { + if x != nil { + return x.RequiresFullScan + } + return false +} + +func (x *DetectionCapability) GetOutputMetrics() []string { + if x != nil { + return x.OutputMetrics + } + return nil +} + +type MaintenanceCapability struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + RequiredDetectionTypes []string `protobuf:"bytes,3,rep,name=required_detection_types,json=requiredDetectionTypes,proto3" json:"required_detection_types,omitempty"` + EstimatedDurationSeconds int32 `protobuf:"varint,4,opt,name=estimated_duration_seconds,json=estimatedDurationSeconds,proto3" json:"estimated_duration_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MaintenanceCapability) Reset() { + *x = MaintenanceCapability{} + mi := &file_plugin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MaintenanceCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MaintenanceCapability) ProtoMessage() {} + +func (x *MaintenanceCapability) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MaintenanceCapability.ProtoReflect.Descriptor instead. +func (*MaintenanceCapability) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{4} +} + +func (x *MaintenanceCapability) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *MaintenanceCapability) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MaintenanceCapability) GetRequiredDetectionTypes() []string { + if x != nil { + return x.RequiredDetectionTypes + } + return nil +} + +func (x *MaintenanceCapability) GetEstimatedDurationSeconds() int32 { + if x != nil { + return x.EstimatedDurationSeconds + } + return 0 +} + +type ExecuteJobRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + JobType string `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + Payload *JobPayload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` + Timeout *durationpb.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` + RetryCount int32 `protobuf:"varint,5,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` + Context map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecuteJobRequest) Reset() { + *x = ExecuteJobRequest{} + mi := &file_plugin_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecuteJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteJobRequest) ProtoMessage() {} + +func (x *ExecuteJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteJobRequest.ProtoReflect.Descriptor instead. +func (*ExecuteJobRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{5} +} + +func (x *ExecuteJobRequest) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *ExecuteJobRequest) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *ExecuteJobRequest) GetPayload() *JobPayload { + if x != nil { + return x.Payload + } + return nil +} + +func (x *ExecuteJobRequest) GetTimeout() *durationpb.Duration { + if x != nil { + return x.Timeout + } + return nil +} + +func (x *ExecuteJobRequest) GetRetryCount() int32 { + if x != nil { + return x.RetryCount + } + return 0 +} + +func (x *ExecuteJobRequest) GetContext() map[string]string { + if x != nil { + return x.Context + } + return nil +} + +type ExecuteJobResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + Status ExecutionStatus `protobuf:"varint,2,opt,name=status,proto3,enum=plugin.ExecutionStatus" json:"status,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecuteJobResponse) Reset() { + *x = ExecuteJobResponse{} + mi := &file_plugin_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecuteJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteJobResponse) ProtoMessage() {} + +func (x *ExecuteJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteJobResponse.ProtoReflect.Descriptor instead. +func (*ExecuteJobResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{6} +} + +func (x *ExecuteJobResponse) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *ExecuteJobResponse) GetStatus() ExecutionStatus { + if x != nil { + return x.Status + } + return ExecutionStatus_EXECUTION_STATUS_UNKNOWN +} + +func (x *ExecuteJobResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type JobPayload struct { + state protoimpl.MessageState `protogen:"open.v1"` + DetectionType string `protobuf:"bytes,1,opt,name=detection_type,json=detectionType,proto3" json:"detection_type,omitempty"` + TargetDatasource string `protobuf:"bytes,2,opt,name=target_datasource,json=targetDatasource,proto3" json:"target_datasource,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + TimestampMs int64 `protobuf:"varint,5,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobPayload) Reset() { + *x = JobPayload{} + mi := &file_plugin_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobPayload) ProtoMessage() {} + +func (x *JobPayload) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobPayload.ProtoReflect.Descriptor instead. +func (*JobPayload) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{7} +} + +func (x *JobPayload) GetDetectionType() string { + if x != nil { + return x.DetectionType + } + return "" +} + +func (x *JobPayload) GetTargetDatasource() string { + if x != nil { + return x.TargetDatasource + } + return "" +} + +func (x *JobPayload) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *JobPayload) GetParameters() map[string]string { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *JobPayload) GetTimestampMs() int64 { + if x != nil { + return x.TimestampMs + } + return 0 +} + +type HealthReport struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + TimestampMs int64 `protobuf:"varint,2,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` + Status HealthStatus `protobuf:"varint,3,opt,name=status,proto3,enum=plugin.HealthStatus" json:"status,omitempty"` + ActiveJobs int32 `protobuf:"varint,4,opt,name=active_jobs,json=activeJobs,proto3" json:"active_jobs,omitempty"` + CpuPercent int64 `protobuf:"varint,5,opt,name=cpu_percent,json=cpuPercent,proto3" json:"cpu_percent,omitempty"` + MemoryBytes int64 `protobuf:"varint,6,opt,name=memory_bytes,json=memoryBytes,proto3" json:"memory_bytes,omitempty"` + JobProgress []*JobProgress `protobuf:"bytes,7,rep,name=job_progress,json=jobProgress,proto3" json:"job_progress,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HealthReport) Reset() { + *x = HealthReport{} + mi := &file_plugin_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HealthReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HealthReport) ProtoMessage() {} + +func (x *HealthReport) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HealthReport.ProtoReflect.Descriptor instead. +func (*HealthReport) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{8} +} + +func (x *HealthReport) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *HealthReport) GetTimestampMs() int64 { + if x != nil { + return x.TimestampMs + } + return 0 +} + +func (x *HealthReport) GetStatus() HealthStatus { + if x != nil { + return x.Status + } + return HealthStatus_HEALTH_STATUS_HEALTHY +} + +func (x *HealthReport) GetActiveJobs() int32 { + if x != nil { + return x.ActiveJobs + } + return 0 +} + +func (x *HealthReport) GetCpuPercent() int64 { + if x != nil { + return x.CpuPercent + } + return 0 +} + +func (x *HealthReport) GetMemoryBytes() int64 { + if x != nil { + return x.MemoryBytes + } + return 0 +} + +func (x *HealthReport) GetJobProgress() []*JobProgress { + if x != nil { + return x.JobProgress + } + return nil +} + +type JobProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + ProgressPercent float32 `protobuf:"fixed32,2,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"` + CurrentStep string `protobuf:"bytes,3,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobProgress) Reset() { + *x = JobProgress{} + mi := &file_plugin_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobProgress) ProtoMessage() {} + +func (x *JobProgress) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobProgress.ProtoReflect.Descriptor instead. +func (*JobProgress) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{9} +} + +func (x *JobProgress) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *JobProgress) GetProgressPercent() float32 { + if x != nil { + return x.ProgressPercent + } + return 0 +} + +func (x *JobProgress) GetCurrentStep() string { + if x != nil { + return x.CurrentStep + } + return "" +} + +type HealthReportResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Acknowledged bool `protobuf:"varint,1,opt,name=acknowledged,proto3" json:"acknowledged,omitempty"` + Feedback string `protobuf:"bytes,2,opt,name=feedback,proto3" json:"feedback,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HealthReportResponse) Reset() { + *x = HealthReportResponse{} + mi := &file_plugin_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HealthReportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HealthReportResponse) ProtoMessage() {} + +func (x *HealthReportResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HealthReportResponse.ProtoReflect.Descriptor instead. +func (*HealthReportResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{10} +} + +func (x *HealthReportResponse) GetAcknowledged() bool { + if x != nil { + return x.Acknowledged + } + return false +} + +func (x *HealthReportResponse) GetFeedback() string { + if x != nil { + return x.Feedback + } + return "" +} + +type GetConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + IncludeDefaults bool `protobuf:"varint,2,opt,name=include_defaults,json=includeDefaults,proto3" json:"include_defaults,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetConfigRequest) Reset() { + *x = GetConfigRequest{} + mi := &file_plugin_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigRequest) ProtoMessage() {} + +func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. +func (*GetConfigRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{11} +} + +func (x *GetConfigRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *GetConfigRequest) GetIncludeDefaults() bool { + if x != nil { + return x.IncludeDefaults + } + return false +} + +type GetConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Config *PluginConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetConfigResponse) Reset() { + *x = GetConfigResponse{} + mi := &file_plugin_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigResponse) ProtoMessage() {} + +func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. +func (*GetConfigResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{12} +} + +func (x *GetConfigResponse) GetConfig() *PluginConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *GetConfigResponse) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +type PluginConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Properties map[string]string `protobuf:"bytes,2,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + JobTypes []*JobTypeConfig `protobuf:"bytes,3,rep,name=job_types,json=jobTypes,proto3" json:"job_types,omitempty"` + MaxRetries int32 `protobuf:"varint,4,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + HealthCheckInterval *durationpb.Duration `protobuf:"bytes,5,opt,name=health_check_interval,json=healthCheckInterval,proto3" json:"health_check_interval,omitempty"` + JobTimeout *durationpb.Duration `protobuf:"bytes,6,opt,name=job_timeout,json=jobTimeout,proto3" json:"job_timeout,omitempty"` + Environment map[string]string `protobuf:"bytes,7,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginConfig) Reset() { + *x = PluginConfig{} + mi := &file_plugin_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginConfig) ProtoMessage() {} + +func (x *PluginConfig) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PluginConfig.ProtoReflect.Descriptor instead. +func (*PluginConfig) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{13} +} + +func (x *PluginConfig) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *PluginConfig) GetProperties() map[string]string { + if x != nil { + return x.Properties + } + return nil +} + +func (x *PluginConfig) GetJobTypes() []*JobTypeConfig { + if x != nil { + return x.JobTypes + } + return nil +} + +func (x *PluginConfig) GetMaxRetries() int32 { + if x != nil { + return x.MaxRetries + } + return 0 +} + +func (x *PluginConfig) GetHealthCheckInterval() *durationpb.Duration { + if x != nil { + return x.HealthCheckInterval + } + return nil +} + +func (x *PluginConfig) GetJobTimeout() *durationpb.Duration { + if x != nil { + return x.JobTimeout + } + return nil +} + +func (x *PluginConfig) GetEnvironment() map[string]string { + if x != nil { + return x.Environment + } + return nil +} + +type JobTypeConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + Priority int32 `protobuf:"varint,3,opt,name=priority,proto3" json:"priority,omitempty"` + Interval *durationpb.Duration `protobuf:"bytes,4,opt,name=interval,proto3" json:"interval,omitempty"` + MaxConcurrent int32 `protobuf:"varint,5,opt,name=max_concurrent,json=maxConcurrent,proto3" json:"max_concurrent,omitempty"` + Parameters map[string]string `protobuf:"bytes,6,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobTypeConfig) Reset() { + *x = JobTypeConfig{} + mi := &file_plugin_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobTypeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobTypeConfig) ProtoMessage() {} + +func (x *JobTypeConfig) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobTypeConfig.ProtoReflect.Descriptor instead. +func (*JobTypeConfig) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{14} +} + +func (x *JobTypeConfig) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *JobTypeConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *JobTypeConfig) GetPriority() int32 { + if x != nil { + return x.Priority + } + return 0 +} + +func (x *JobTypeConfig) GetInterval() *durationpb.Duration { + if x != nil { + return x.Interval + } + return nil +} + +func (x *JobTypeConfig) GetMaxConcurrent() int32 { + if x != nil { + return x.MaxConcurrent + } + return 0 +} + +func (x *JobTypeConfig) GetParameters() map[string]string { + if x != nil { + return x.Parameters + } + return nil +} + +type JobResultRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + JobType string `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + Status ExecutionStatus `protobuf:"varint,3,opt,name=status,proto3,enum=plugin.ExecutionStatus" json:"status,omitempty"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` + Result *JobResult `protobuf:"bytes,5,opt,name=result,proto3" json:"result,omitempty"` + ExecutionTime *durationpb.Duration `protobuf:"bytes,6,opt,name=execution_time,json=executionTime,proto3" json:"execution_time,omitempty"` + RetryCountUsed int32 `protobuf:"varint,7,opt,name=retry_count_used,json=retryCountUsed,proto3" json:"retry_count_used,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobResultRequest) Reset() { + *x = JobResultRequest{} + mi := &file_plugin_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobResultRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobResultRequest) ProtoMessage() {} + +func (x *JobResultRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobResultRequest.ProtoReflect.Descriptor instead. +func (*JobResultRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{15} +} + +func (x *JobResultRequest) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *JobResultRequest) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *JobResultRequest) GetStatus() ExecutionStatus { + if x != nil { + return x.Status + } + return ExecutionStatus_EXECUTION_STATUS_UNKNOWN +} + +func (x *JobResultRequest) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *JobResultRequest) GetResult() *JobResult { + if x != nil { + return x.Result + } + return nil +} + +func (x *JobResultRequest) GetExecutionTime() *durationpb.Duration { + if x != nil { + return x.ExecutionTime + } + return nil +} + +func (x *JobResultRequest) GetRetryCountUsed() int32 { + if x != nil { + return x.RetryCountUsed + } + return 0 +} + +type JobResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Detections []*DetectionRecord `protobuf:"bytes,3,rep,name=detections,proto3" json:"detections,omitempty"` + Warnings []string `protobuf:"bytes,4,rep,name=warnings,proto3" json:"warnings,omitempty"` + Errors []string `protobuf:"bytes,5,rep,name=errors,proto3" json:"errors,omitempty"` + Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobResult) Reset() { + *x = JobResult{} + mi := &file_plugin_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobResult) ProtoMessage() {} + +func (x *JobResult) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobResult.ProtoReflect.Descriptor instead. +func (*JobResult) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{16} +} + +func (x *JobResult) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *JobResult) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *JobResult) GetDetections() []*DetectionRecord { + if x != nil { + return x.Detections + } + return nil +} + +func (x *JobResult) GetWarnings() []string { + if x != nil { + return x.Warnings + } + return nil +} + +func (x *JobResult) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *JobResult) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type DetectionRecord struct { + state protoimpl.MessageState `protogen:"open.v1"` + DetectionType string `protobuf:"bytes,1,opt,name=detection_type,json=detectionType,proto3" json:"detection_type,omitempty"` + TimestampMs int64 `protobuf:"varint,2,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` + Severity string `protobuf:"bytes,3,opt,name=severity,proto3" json:"severity,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + AffectedResource string `protobuf:"bytes,5,opt,name=affected_resource,json=affectedResource,proto3" json:"affected_resource,omitempty"` + RawData []byte `protobuf:"bytes,6,opt,name=raw_data,json=rawData,proto3" json:"raw_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DetectionRecord) Reset() { + *x = DetectionRecord{} + mi := &file_plugin_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DetectionRecord) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetectionRecord) ProtoMessage() {} + +func (x *DetectionRecord) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DetectionRecord.ProtoReflect.Descriptor instead. +func (*DetectionRecord) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{17} +} + +func (x *DetectionRecord) GetDetectionType() string { + if x != nil { + return x.DetectionType + } + return "" +} + +func (x *DetectionRecord) GetTimestampMs() int64 { + if x != nil { + return x.TimestampMs + } + return 0 +} + +func (x *DetectionRecord) GetSeverity() string { + if x != nil { + return x.Severity + } + return "" +} + +func (x *DetectionRecord) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *DetectionRecord) GetAffectedResource() string { + if x != nil { + return x.AffectedResource + } + return "" +} + +func (x *DetectionRecord) GetRawData() []byte { + if x != nil { + return x.RawData + } + return nil +} + +type JobResultResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Acknowledged bool `protobuf:"varint,1,opt,name=acknowledged,proto3" json:"acknowledged,omitempty"` + ActionsToTake []string `protobuf:"bytes,2,rep,name=actions_to_take,json=actionsToTake,proto3" json:"actions_to_take,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobResultResponse) Reset() { + *x = JobResultResponse{} + mi := &file_plugin_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobResultResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobResultResponse) ProtoMessage() {} + +func (x *JobResultResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobResultResponse.ProtoReflect.Descriptor instead. +func (*JobResultResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{18} +} + +func (x *JobResultResponse) GetAcknowledged() bool { + if x != nil { + return x.Acknowledged + } + return false +} + +func (x *JobResultResponse) GetActionsToTake() []string { + if x != nil { + return x.ActionsToTake + } + return nil +} + +type GetPluginStatsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginStatsRequest) Reset() { + *x = GetPluginStatsRequest{} + mi := &file_plugin_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginStatsRequest) ProtoMessage() {} + +func (x *GetPluginStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPluginStatsRequest.ProtoReflect.Descriptor instead. +func (*GetPluginStatsRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{19} +} + +func (x *GetPluginStatsRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +type GetPluginStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Stats []*PluginStats `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginStatsResponse) Reset() { + *x = GetPluginStatsResponse{} + mi := &file_plugin_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginStatsResponse) ProtoMessage() {} + +func (x *GetPluginStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPluginStatsResponse.ProtoReflect.Descriptor instead. +func (*GetPluginStatsResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{20} +} + +func (x *GetPluginStatsResponse) GetStats() []*PluginStats { + if x != nil { + return x.Stats + } + return nil +} + +type PluginStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + ActiveJobs int32 `protobuf:"varint,3,opt,name=active_jobs,json=activeJobs,proto3" json:"active_jobs,omitempty"` + CompletedJobs int32 `protobuf:"varint,4,opt,name=completed_jobs,json=completedJobs,proto3" json:"completed_jobs,omitempty"` + FailedJobs int32 `protobuf:"varint,5,opt,name=failed_jobs,json=failedJobs,proto3" json:"failed_jobs,omitempty"` + TotalDetections int64 `protobuf:"varint,6,opt,name=total_detections,json=totalDetections,proto3" json:"total_detections,omitempty"` + AvgExecutionTimeMs float32 `protobuf:"fixed32,7,opt,name=avg_execution_time_ms,json=avgExecutionTimeMs,proto3" json:"avg_execution_time_ms,omitempty"` + CpuUsagePercent float32 `protobuf:"fixed32,8,opt,name=cpu_usage_percent,json=cpuUsagePercent,proto3" json:"cpu_usage_percent,omitempty"` + MemoryUsageBytes int64 `protobuf:"varint,9,opt,name=memory_usage_bytes,json=memoryUsageBytes,proto3" json:"memory_usage_bytes,omitempty"` + LastHeartbeat *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_heartbeat,json=lastHeartbeat,proto3" json:"last_heartbeat,omitempty"` + UptimeSeconds int32 `protobuf:"varint,11,opt,name=uptime_seconds,json=uptimeSeconds,proto3" json:"uptime_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginStats) Reset() { + *x = PluginStats{} + mi := &file_plugin_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginStats) ProtoMessage() {} + +func (x *PluginStats) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PluginStats.ProtoReflect.Descriptor instead. +func (*PluginStats) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{21} +} + +func (x *PluginStats) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *PluginStats) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PluginStats) GetActiveJobs() int32 { + if x != nil { + return x.ActiveJobs + } + return 0 +} + +func (x *PluginStats) GetCompletedJobs() int32 { + if x != nil { + return x.CompletedJobs + } + return 0 +} + +func (x *PluginStats) GetFailedJobs() int32 { + if x != nil { + return x.FailedJobs + } + return 0 +} + +func (x *PluginStats) GetTotalDetections() int64 { + if x != nil { + return x.TotalDetections + } + return 0 +} + +func (x *PluginStats) GetAvgExecutionTimeMs() float32 { + if x != nil { + return x.AvgExecutionTimeMs + } + return 0 +} + +func (x *PluginStats) GetCpuUsagePercent() float32 { + if x != nil { + return x.CpuUsagePercent + } + return 0 +} + +func (x *PluginStats) GetMemoryUsageBytes() int64 { + if x != nil { + return x.MemoryUsageBytes + } + return 0 +} + +func (x *PluginStats) GetLastHeartbeat() *timestamppb.Timestamp { + if x != nil { + return x.LastHeartbeat + } + return nil +} + +func (x *PluginStats) GetUptimeSeconds() int32 { + if x != nil { + return x.UptimeSeconds + } + return 0 +} + +type ListPluginsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + IncludeDisabled bool `protobuf:"varint,1,opt,name=include_disabled,json=includeDisabled,proto3" json:"include_disabled,omitempty"` + FilterByCapability []string `protobuf:"bytes,2,rep,name=filter_by_capability,json=filterByCapability,proto3" json:"filter_by_capability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPluginsRequest) Reset() { + *x = ListPluginsRequest{} + mi := &file_plugin_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPluginsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPluginsRequest) ProtoMessage() {} + +func (x *ListPluginsRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPluginsRequest.ProtoReflect.Descriptor instead. +func (*ListPluginsRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{22} +} + +func (x *ListPluginsRequest) GetIncludeDisabled() bool { + if x != nil { + return x.IncludeDisabled + } + return false +} + +func (x *ListPluginsRequest) GetFilterByCapability() []string { + if x != nil { + return x.FilterByCapability + } + return nil +} + +type ListPluginsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Plugins []*PluginInfo `protobuf:"bytes,1,rep,name=plugins,proto3" json:"plugins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPluginsResponse) Reset() { + *x = ListPluginsResponse{} + mi := &file_plugin_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPluginsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPluginsResponse) ProtoMessage() {} + +func (x *ListPluginsResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPluginsResponse.ProtoReflect.Descriptor instead. +func (*ListPluginsResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{23} +} + +func (x *ListPluginsResponse) GetPlugins() []*PluginInfo { + if x != nil { + return x.Plugins + } + return nil +} + +type PluginInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + Capabilities []string `protobuf:"bytes,5,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + MaxConcurrentJobs int32 `protobuf:"varint,6,opt,name=max_concurrent_jobs,json=maxConcurrentJobs,proto3" json:"max_concurrent_jobs,omitempty"` + ActiveJobs int32 `protobuf:"varint,7,opt,name=active_jobs,json=activeJobs,proto3" json:"active_jobs,omitempty"` + ConnectedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=connected_at,json=connectedAt,proto3" json:"connected_at,omitempty"` + LastHeartbeat *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_heartbeat,json=lastHeartbeat,proto3" json:"last_heartbeat,omitempty"` + Metadata map[string]string `protobuf:"bytes,10,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginInfo) Reset() { + *x = PluginInfo{} + mi := &file_plugin_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginInfo) ProtoMessage() {} + +func (x *PluginInfo) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PluginInfo.ProtoReflect.Descriptor instead. +func (*PluginInfo) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{24} +} + +func (x *PluginInfo) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *PluginInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PluginInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PluginInfo) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PluginInfo) GetCapabilities() []string { + if x != nil { + return x.Capabilities + } + return nil +} + +func (x *PluginInfo) GetMaxConcurrentJobs() int32 { + if x != nil { + return x.MaxConcurrentJobs + } + return 0 +} + +func (x *PluginInfo) GetActiveJobs() int32 { + if x != nil { + return x.ActiveJobs + } + return 0 +} + +func (x *PluginInfo) GetConnectedAt() *timestamppb.Timestamp { + if x != nil { + return x.ConnectedAt + } + return nil +} + +func (x *PluginInfo) GetLastHeartbeat() *timestamppb.Timestamp { + if x != nil { + return x.LastHeartbeat + } + return nil +} + +func (x *PluginInfo) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type ListJobsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + FilterState JobState `protobuf:"varint,2,opt,name=filter_state,json=filterState,proto3,enum=plugin.JobState" json:"filter_state,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + IncludeHistory bool `protobuf:"varint,5,opt,name=include_history,json=includeHistory,proto3" json:"include_history,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListJobsRequest) Reset() { + *x = ListJobsRequest{} + mi := &file_plugin_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListJobsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsRequest) ProtoMessage() {} + +func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead. +func (*ListJobsRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{25} +} + +func (x *ListJobsRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *ListJobsRequest) GetFilterState() JobState { + if x != nil { + return x.FilterState + } + return JobState_JOB_STATE_PENDING +} + +func (x *ListJobsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListJobsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *ListJobsRequest) GetIncludeHistory() bool { + if x != nil { + return x.IncludeHistory + } + return false +} + +type ListJobsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Jobs []*JobInfo `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` + TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListJobsResponse) Reset() { + *x = ListJobsResponse{} + mi := &file_plugin_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListJobsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsResponse) ProtoMessage() {} + +func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead. +func (*ListJobsResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{26} +} + +func (x *ListJobsResponse) GetJobs() []*JobInfo { + if x != nil { + return x.Jobs + } + return nil +} + +func (x *ListJobsResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +type JobInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + JobType string `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + PluginId string `protobuf:"bytes,3,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + State JobState `protobuf:"varint,4,opt,name=state,proto3,enum=plugin.JobState" json:"state,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + StartedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + CompletedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + ExecutionTime *durationpb.Duration `protobuf:"bytes,8,opt,name=execution_time,json=executionTime,proto3" json:"execution_time,omitempty"` + RetryCount int32 `protobuf:"varint,9,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` + LastError string `protobuf:"bytes,10,opt,name=last_error,json=lastError,proto3" json:"last_error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobInfo) Reset() { + *x = JobInfo{} + mi := &file_plugin_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobInfo) ProtoMessage() {} + +func (x *JobInfo) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobInfo.ProtoReflect.Descriptor instead. +func (*JobInfo) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{27} +} + +func (x *JobInfo) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *JobInfo) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *JobInfo) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *JobInfo) GetState() JobState { + if x != nil { + return x.State + } + return JobState_JOB_STATE_PENDING +} + +func (x *JobInfo) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *JobInfo) GetStartedAt() *timestamppb.Timestamp { + if x != nil { + return x.StartedAt + } + return nil +} + +func (x *JobInfo) GetCompletedAt() *timestamppb.Timestamp { + if x != nil { + return x.CompletedAt + } + return nil +} + +func (x *JobInfo) GetExecutionTime() *durationpb.Duration { + if x != nil { + return x.ExecutionTime + } + return nil +} + +func (x *JobInfo) GetRetryCount() int32 { + if x != nil { + return x.RetryCount + } + return 0 +} + +func (x *JobInfo) GetLastError() string { + if x != nil { + return x.LastError + } + return "" +} + +type GetJobStatusRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetJobStatusRequest) Reset() { + *x = GetJobStatusRequest{} + mi := &file_plugin_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetJobStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetJobStatusRequest) ProtoMessage() {} + +func (x *GetJobStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetJobStatusRequest.ProtoReflect.Descriptor instead. +func (*GetJobStatusRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{28} +} + +func (x *GetJobStatusRequest) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +type GetJobStatusResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobInfo *JobInfo `protobuf:"bytes,1,opt,name=job_info,json=jobInfo,proto3" json:"job_info,omitempty"` + Result *JobResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + DetailedStatus string `protobuf:"bytes,3,opt,name=detailed_status,json=detailedStatus,proto3" json:"detailed_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetJobStatusResponse) Reset() { + *x = GetJobStatusResponse{} + mi := &file_plugin_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetJobStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetJobStatusResponse) ProtoMessage() {} + +func (x *GetJobStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetJobStatusResponse.ProtoReflect.Descriptor instead. +func (*GetJobStatusResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{29} +} + +func (x *GetJobStatusResponse) GetJobInfo() *JobInfo { + if x != nil { + return x.JobInfo + } + return nil +} + +func (x *GetJobStatusResponse) GetResult() *JobResult { + if x != nil { + return x.Result + } + return nil +} + +func (x *GetJobStatusResponse) GetDetailedStatus() string { + if x != nil { + return x.DetailedStatus + } + return "" +} + +type GetPluginLogsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Lines int32 `protobuf:"varint,2,opt,name=lines,proto3" json:"lines,omitempty"` + SinceTimestampMs int64 `protobuf:"varint,3,opt,name=since_timestamp_ms,json=sinceTimestampMs,proto3" json:"since_timestamp_ms,omitempty"` + LogLevel string `protobuf:"bytes,4,opt,name=log_level,json=logLevel,proto3" json:"log_level,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginLogsRequest) Reset() { + *x = GetPluginLogsRequest{} + mi := &file_plugin_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginLogsRequest) ProtoMessage() {} + +func (x *GetPluginLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPluginLogsRequest.ProtoReflect.Descriptor instead. +func (*GetPluginLogsRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{30} +} + +func (x *GetPluginLogsRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *GetPluginLogsRequest) GetLines() int32 { + if x != nil { + return x.Lines + } + return 0 +} + +func (x *GetPluginLogsRequest) GetSinceTimestampMs() int64 { + if x != nil { + return x.SinceTimestampMs + } + return 0 +} + +func (x *GetPluginLogsRequest) GetLogLevel() string { + if x != nil { + return x.LogLevel + } + return "" +} + +type GetPluginLogsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Entries []*LogEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginLogsResponse) Reset() { + *x = GetPluginLogsResponse{} + mi := &file_plugin_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginLogsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginLogsResponse) ProtoMessage() {} + +func (x *GetPluginLogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPluginLogsResponse.ProtoReflect.Descriptor instead. +func (*GetPluginLogsResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{31} +} + +func (x *GetPluginLogsResponse) GetEntries() []*LogEntry { + if x != nil { + return x.Entries + } + return nil +} + +type LogEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + TimestampMs int64 `protobuf:"varint,1,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` + Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + Context map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LogEntry) Reset() { + *x = LogEntry{} + mi := &file_plugin_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LogEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogEntry) ProtoMessage() {} + +func (x *LogEntry) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogEntry.ProtoReflect.Descriptor instead. +func (*LogEntry) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{32} +} + +func (x *LogEntry) GetTimestampMs() int64 { + if x != nil { + return x.TimestampMs + } + return 0 +} + +func (x *LogEntry) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +func (x *LogEntry) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *LogEntry) GetContext() map[string]string { + if x != nil { + return x.Context + } + return nil +} + +type SaveConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Config *PluginConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + BackupExisting bool `protobuf:"varint,2,opt,name=backup_existing,json=backupExisting,proto3" json:"backup_existing,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SaveConfigRequest) Reset() { + *x = SaveConfigRequest{} + mi := &file_plugin_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SaveConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveConfigRequest) ProtoMessage() {} + +func (x *SaveConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveConfigRequest.ProtoReflect.Descriptor instead. +func (*SaveConfigRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{33} +} + +func (x *SaveConfigRequest) GetConfig() *PluginConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *SaveConfigRequest) GetBackupExisting() bool { + if x != nil { + return x.BackupExisting + } + return false +} + +type SaveConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + ConfigVersion int64 `protobuf:"varint,3,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SaveConfigResponse) Reset() { + *x = SaveConfigResponse{} + mi := &file_plugin_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SaveConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveConfigResponse) ProtoMessage() {} + +func (x *SaveConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveConfigResponse.ProtoReflect.Descriptor instead. +func (*SaveConfigResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{34} +} + +func (x *SaveConfigResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *SaveConfigResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *SaveConfigResponse) GetConfigVersion() int64 { + if x != nil { + return x.ConfigVersion + } + return 0 +} + +type ReloadConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReloadConfigRequest) Reset() { + *x = ReloadConfigRequest{} + mi := &file_plugin_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReloadConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReloadConfigRequest) ProtoMessage() {} + +func (x *ReloadConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReloadConfigRequest.ProtoReflect.Descriptor instead. +func (*ReloadConfigRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{35} +} + +func (x *ReloadConfigRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +type ReloadConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReloadConfigResponse) Reset() { + *x = ReloadConfigResponse{} + mi := &file_plugin_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReloadConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReloadConfigResponse) ProtoMessage() {} + +func (x *ReloadConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReloadConfigResponse.ProtoReflect.Descriptor instead. +func (*ReloadConfigResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{36} +} + +func (x *ReloadConfigResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *ReloadConfigResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type EnablePluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EnablePluginRequest) Reset() { + *x = EnablePluginRequest{} + mi := &file_plugin_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EnablePluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnablePluginRequest) ProtoMessage() {} + +func (x *EnablePluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnablePluginRequest.ProtoReflect.Descriptor instead. +func (*EnablePluginRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{37} +} + +func (x *EnablePluginRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +type EnablePluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EnablePluginResponse) Reset() { + *x = EnablePluginResponse{} + mi := &file_plugin_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EnablePluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnablePluginResponse) ProtoMessage() {} + +func (x *EnablePluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnablePluginResponse.ProtoReflect.Descriptor instead. +func (*EnablePluginResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{38} +} + +func (x *EnablePluginResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *EnablePluginResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type DisablePluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DisablePluginRequest) Reset() { + *x = DisablePluginRequest{} + mi := &file_plugin_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DisablePluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisablePluginRequest) ProtoMessage() {} + +func (x *DisablePluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisablePluginRequest.ProtoReflect.Descriptor instead. +func (*DisablePluginRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{39} +} + +func (x *DisablePluginRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +type DisablePluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DisablePluginResponse) Reset() { + *x = DisablePluginResponse{} + mi := &file_plugin_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DisablePluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisablePluginResponse) ProtoMessage() {} + +func (x *DisablePluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisablePluginResponse.ProtoReflect.Descriptor instead. +func (*DisablePluginResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{40} +} + +func (x *DisablePluginResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *DisablePluginResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type TriggerDetectionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + DetectionTypes []string `protobuf:"bytes,1,rep,name=detection_types,json=detectionTypes,proto3" json:"detection_types,omitempty"` + TargetDatasource string `protobuf:"bytes,2,opt,name=target_datasource,json=targetDatasource,proto3" json:"target_datasource,omitempty"` + Parallelism int32 `protobuf:"varint,3,opt,name=parallelism,proto3" json:"parallelism,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TriggerDetectionRequest) Reset() { + *x = TriggerDetectionRequest{} + mi := &file_plugin_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TriggerDetectionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TriggerDetectionRequest) ProtoMessage() {} + +func (x *TriggerDetectionRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TriggerDetectionRequest.ProtoReflect.Descriptor instead. +func (*TriggerDetectionRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{41} +} + +func (x *TriggerDetectionRequest) GetDetectionTypes() []string { + if x != nil { + return x.DetectionTypes + } + return nil +} + +func (x *TriggerDetectionRequest) GetTargetDatasource() string { + if x != nil { + return x.TargetDatasource + } + return "" +} + +func (x *TriggerDetectionRequest) GetParallelism() int32 { + if x != nil { + return x.Parallelism + } + return 0 +} + +type TriggerDetectionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + TriggeredJobIds []string `protobuf:"bytes,2,rep,name=triggered_job_ids,json=triggeredJobIds,proto3" json:"triggered_job_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TriggerDetectionResponse) Reset() { + *x = TriggerDetectionResponse{} + mi := &file_plugin_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TriggerDetectionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TriggerDetectionResponse) ProtoMessage() {} + +func (x *TriggerDetectionResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TriggerDetectionResponse.ProtoReflect.Descriptor instead. +func (*TriggerDetectionResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{42} +} + +func (x *TriggerDetectionResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *TriggerDetectionResponse) GetTriggeredJobIds() []string { + if x != nil { + return x.TriggeredJobIds + } + return nil +} + +type CancelJobRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CancelJobRequest) Reset() { + *x = CancelJobRequest{} + mi := &file_plugin_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CancelJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelJobRequest) ProtoMessage() {} + +func (x *CancelJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelJobRequest.ProtoReflect.Descriptor instead. +func (*CancelJobRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{43} +} + +func (x *CancelJobRequest) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *CancelJobRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type CancelJobResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CancelJobResponse) Reset() { + *x = CancelJobResponse{} + mi := &file_plugin_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CancelJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelJobResponse) ProtoMessage() {} + +func (x *CancelJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelJobResponse.ProtoReflect.Descriptor instead. +func (*CancelJobResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{44} +} + +func (x *CancelJobResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *CancelJobResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type PurgeHistoryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + BeforeTimestampMs int64 `protobuf:"varint,1,opt,name=before_timestamp_ms,json=beforeTimestampMs,proto3" json:"before_timestamp_ms,omitempty"` + StatesToPurge []JobState `protobuf:"varint,2,rep,packed,name=states_to_purge,json=statesToPurge,proto3,enum=plugin.JobState" json:"states_to_purge,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PurgeHistoryRequest) Reset() { + *x = PurgeHistoryRequest{} + mi := &file_plugin_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PurgeHistoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PurgeHistoryRequest) ProtoMessage() {} + +func (x *PurgeHistoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PurgeHistoryRequest.ProtoReflect.Descriptor instead. +func (*PurgeHistoryRequest) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{45} +} + +func (x *PurgeHistoryRequest) GetBeforeTimestampMs() int64 { + if x != nil { + return x.BeforeTimestampMs + } + return 0 +} + +func (x *PurgeHistoryRequest) GetStatesToPurge() []JobState { + if x != nil { + return x.StatesToPurge + } + return nil +} + +type PurgeHistoryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + RecordsDeleted int32 `protobuf:"varint,2,opt,name=records_deleted,json=recordsDeleted,proto3" json:"records_deleted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PurgeHistoryResponse) Reset() { + *x = PurgeHistoryResponse{} + mi := &file_plugin_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PurgeHistoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PurgeHistoryResponse) ProtoMessage() {} + +func (x *PurgeHistoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PurgeHistoryResponse.ProtoReflect.Descriptor instead. +func (*PurgeHistoryResponse) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{46} +} + +func (x *PurgeHistoryResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *PurgeHistoryResponse) GetRecordsDeleted() int32 { + if x != nil { + return x.RecordsDeleted + } + return 0 +} + +type ExecutionRecord struct { + state protoimpl.MessageState `protogen:"open.v1"` + JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` + JobType string `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + PluginId string `protobuf:"bytes,3,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + State JobState `protobuf:"varint,4,opt,name=state,proto3,enum=plugin.JobState" json:"state,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + StartedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + CompletedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + Payload *JobPayload `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"` + Result *JobResult `protobuf:"bytes,9,opt,name=result,proto3" json:"result,omitempty"` + RetryCount int32 `protobuf:"varint,10,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` + LastError string `protobuf:"bytes,11,opt,name=last_error,json=lastError,proto3" json:"last_error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionRecord) Reset() { + *x = ExecutionRecord{} + mi := &file_plugin_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionRecord) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionRecord) ProtoMessage() {} + +func (x *ExecutionRecord) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionRecord.ProtoReflect.Descriptor instead. +func (*ExecutionRecord) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{47} +} + +func (x *ExecutionRecord) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *ExecutionRecord) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *ExecutionRecord) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *ExecutionRecord) GetState() JobState { + if x != nil { + return x.State + } + return JobState_JOB_STATE_PENDING +} + +func (x *ExecutionRecord) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ExecutionRecord) GetStartedAt() *timestamppb.Timestamp { + if x != nil { + return x.StartedAt + } + return nil +} + +func (x *ExecutionRecord) GetCompletedAt() *timestamppb.Timestamp { + if x != nil { + return x.CompletedAt + } + return nil +} + +func (x *ExecutionRecord) GetPayload() *JobPayload { + if x != nil { + return x.Payload + } + return nil +} + +func (x *ExecutionRecord) GetResult() *JobResult { + if x != nil { + return x.Result + } + return nil +} + +func (x *ExecutionRecord) GetRetryCount() int32 { + if x != nil { + return x.RetryCount + } + return 0 +} + +func (x *ExecutionRecord) GetLastError() string { + if x != nil { + return x.LastError + } + return "" +} + +type ConfigSnapshot struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Config *PluginConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Version int64 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigSnapshot) Reset() { + *x = ConfigSnapshot{} + mi := &file_plugin_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigSnapshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigSnapshot) ProtoMessage() {} + +func (x *ConfigSnapshot) ProtoReflect() protoreflect.Message { + mi := &file_plugin_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfigSnapshot.ProtoReflect.Descriptor instead. +func (*ConfigSnapshot) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{48} +} + +func (x *ConfigSnapshot) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *ConfigSnapshot) GetConfig() *PluginConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *ConfigSnapshot) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ConfigSnapshot) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +var File_plugin_proto protoreflect.FileDescriptor + +const file_plugin_proto_rawDesc = "" + + "\n" + + "\fplugin.proto\x12\x06plugin\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"\xd7\x03\n" + + "\x14PluginConnectRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x1f\n" + + "\vplugin_name\x18\x02 \x01(\tR\n" + + "pluginName\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12\"\n" + + "\fcapabilities\x18\x04 \x03(\tR\fcapabilities\x12K\n" + + "\x13capabilities_detail\x18\x05 \x01(\v2\x1a.plugin.PluginCapabilitiesR\x12capabilitiesDetail\x12.\n" + + "\x13max_concurrent_jobs\x18\x06 \x01(\x05R\x11maxConcurrentJobs\x12-\n" + + "\x12supports_streaming\x18\a \x01(\bR\x11supportsStreaming\x12\x12\n" + + "\x04port\x18\b \x01(\x05R\x04port\x12F\n" + + "\bmetadata\x18\t \x03(\v2*.plugin.PluginConnectRequest.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xbd\x01\n" + + "\x15PluginConnectResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12\x1b\n" + + "\tmaster_id\x18\x03 \x01(\tR\bmasterId\x12%\n" + + "\x0eassigned_types\x18\x04 \x03(\tR\rassignedTypes\x12,\n" + + "\x06config\x18\x05 \x01(\v2\x14.plugin.PluginConfigR\x06config\"\xc5\x01\n" + + "\x12PluginCapabilities\x129\n" + + "\tdetection\x18\x01 \x03(\v2\x1b.plugin.DetectionCapabilityR\tdetection\x12?\n" + + "\vmaintenance\x18\x02 \x03(\v2\x1d.plugin.MaintenanceCapabilityR\vmaintenance\x123\n" + + "\x15supported_datasources\x18\x03 \x03(\tR\x14supportedDatasources\"\xd2\x01\n" + + "\x13DetectionCapability\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x120\n" + + "\x14min_interval_seconds\x18\x03 \x01(\x05R\x12minIntervalSeconds\x12,\n" + + "\x12requires_full_scan\x18\x04 \x01(\bR\x10requiresFullScan\x12%\n" + + "\x0eoutput_metrics\x18\x05 \x03(\tR\routputMetrics\"\xc5\x01\n" + + "\x15MaintenanceCapability\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x128\n" + + "\x18required_detection_types\x18\x03 \x03(\tR\x16requiredDetectionTypes\x12<\n" + + "\x1aestimated_duration_seconds\x18\x04 \x01(\x05R\x18estimatedDurationSeconds\"\xc7\x02\n" + + "\x11ExecuteJobRequest\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x19\n" + + "\bjob_type\x18\x02 \x01(\tR\ajobType\x12,\n" + + "\apayload\x18\x03 \x01(\v2\x12.plugin.JobPayloadR\apayload\x123\n" + + "\atimeout\x18\x04 \x01(\v2\x19.google.protobuf.DurationR\atimeout\x12\x1f\n" + + "\vretry_count\x18\x05 \x01(\x05R\n" + + "retryCount\x12@\n" + + "\acontext\x18\x06 \x03(\v2&.plugin.ExecuteJobRequest.ContextEntryR\acontext\x1a:\n" + + "\fContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"v\n" + + "\x12ExecuteJobResponse\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12/\n" + + "\x06status\x18\x02 \x01(\x0e2\x17.plugin.ExecutionStatusR\x06status\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\"\x9a\x02\n" + + "\n" + + "JobPayload\x12%\n" + + "\x0edetection_type\x18\x01 \x01(\tR\rdetectionType\x12+\n" + + "\x11target_datasource\x18\x02 \x01(\tR\x10targetDatasource\x12\x12\n" + + "\x04data\x18\x03 \x01(\fR\x04data\x12B\n" + + "\n" + + "parameters\x18\x04 \x03(\v2\".plugin.JobPayload.ParametersEntryR\n" + + "parameters\x12!\n" + + "\ftimestamp_ms\x18\x05 \x01(\x03R\vtimestampMs\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x99\x02\n" + + "\fHealthReport\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12!\n" + + "\ftimestamp_ms\x18\x02 \x01(\x03R\vtimestampMs\x12,\n" + + "\x06status\x18\x03 \x01(\x0e2\x14.plugin.HealthStatusR\x06status\x12\x1f\n" + + "\vactive_jobs\x18\x04 \x01(\x05R\n" + + "activeJobs\x12\x1f\n" + + "\vcpu_percent\x18\x05 \x01(\x03R\n" + + "cpuPercent\x12!\n" + + "\fmemory_bytes\x18\x06 \x01(\x03R\vmemoryBytes\x126\n" + + "\fjob_progress\x18\a \x03(\v2\x13.plugin.JobProgressR\vjobProgress\"r\n" + + "\vJobProgress\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12)\n" + + "\x10progress_percent\x18\x02 \x01(\x02R\x0fprogressPercent\x12!\n" + + "\fcurrent_step\x18\x03 \x01(\tR\vcurrentStep\"V\n" + + "\x14HealthReportResponse\x12\"\n" + + "\facknowledged\x18\x01 \x01(\bR\facknowledged\x12\x1a\n" + + "\bfeedback\x18\x02 \x01(\tR\bfeedback\"Z\n" + + "\x10GetConfigRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12)\n" + + "\x10include_defaults\x18\x02 \x01(\bR\x0fincludeDefaults\"[\n" + + "\x11GetConfigResponse\x12,\n" + + "\x06config\x18\x01 \x01(\v2\x14.plugin.PluginConfigR\x06config\x12\x18\n" + + "\aversion\x18\x02 \x01(\x03R\aversion\"\x99\x04\n" + + "\fPluginConfig\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12D\n" + + "\n" + + "properties\x18\x02 \x03(\v2$.plugin.PluginConfig.PropertiesEntryR\n" + + "properties\x122\n" + + "\tjob_types\x18\x03 \x03(\v2\x15.plugin.JobTypeConfigR\bjobTypes\x12\x1f\n" + + "\vmax_retries\x18\x04 \x01(\x05R\n" + + "maxRetries\x12M\n" + + "\x15health_check_interval\x18\x05 \x01(\v2\x19.google.protobuf.DurationR\x13healthCheckInterval\x12:\n" + + "\vjob_timeout\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\n" + + "jobTimeout\x12G\n" + + "\venvironment\x18\a \x03(\v2%.plugin.PluginConfig.EnvironmentEntryR\venvironment\x1a=\n" + + "\x0fPropertiesEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a>\n" + + "\x10EnvironmentEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xbd\x02\n" + + "\rJobTypeConfig\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n" + + "\aenabled\x18\x02 \x01(\bR\aenabled\x12\x1a\n" + + "\bpriority\x18\x03 \x01(\x05R\bpriority\x125\n" + + "\binterval\x18\x04 \x01(\v2\x19.google.protobuf.DurationR\binterval\x12%\n" + + "\x0emax_concurrent\x18\x05 \x01(\x05R\rmaxConcurrent\x12E\n" + + "\n" + + "parameters\x18\x06 \x03(\v2%.plugin.JobTypeConfig.ParametersEntryR\n" + + "parameters\x1a=\n" + + "\x0fParametersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xa6\x02\n" + + "\x10JobResultRequest\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x19\n" + + "\bjob_type\x18\x02 \x01(\tR\ajobType\x12/\n" + + "\x06status\x18\x03 \x01(\x0e2\x17.plugin.ExecutionStatusR\x06status\x12\x18\n" + + "\amessage\x18\x04 \x01(\tR\amessage\x12)\n" + + "\x06result\x18\x05 \x01(\v2\x11.plugin.JobResultR\x06result\x12@\n" + + "\x0eexecution_time\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\rexecutionTime\x12(\n" + + "\x10retry_count_used\x18\a \x01(\x05R\x0eretryCountUsed\"\xa0\x02\n" + + "\tJobResult\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x12\n" + + "\x04data\x18\x02 \x01(\fR\x04data\x127\n" + + "\n" + + "detections\x18\x03 \x03(\v2\x17.plugin.DetectionRecordR\n" + + "detections\x12\x1a\n" + + "\bwarnings\x18\x04 \x03(\tR\bwarnings\x12\x16\n" + + "\x06errors\x18\x05 \x03(\tR\x06errors\x12;\n" + + "\bmetadata\x18\x06 \x03(\v2\x1f.plugin.JobResult.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe1\x01\n" + + "\x0fDetectionRecord\x12%\n" + + "\x0edetection_type\x18\x01 \x01(\tR\rdetectionType\x12!\n" + + "\ftimestamp_ms\x18\x02 \x01(\x03R\vtimestampMs\x12\x1a\n" + + "\bseverity\x18\x03 \x01(\tR\bseverity\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12+\n" + + "\x11affected_resource\x18\x05 \x01(\tR\x10affectedResource\x12\x19\n" + + "\braw_data\x18\x06 \x01(\fR\arawData\"_\n" + + "\x11JobResultResponse\x12\"\n" + + "\facknowledged\x18\x01 \x01(\bR\facknowledged\x12&\n" + + "\x0factions_to_take\x18\x02 \x03(\tR\ractionsToTake\"4\n" + + "\x15GetPluginStatsRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\"C\n" + + "\x16GetPluginStatsResponse\x12)\n" + + "\x05stats\x18\x01 \x03(\v2\x13.plugin.PluginStatsR\x05stats\"\xcd\x03\n" + + "\vPluginStats\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x16\n" + + "\x06status\x18\x02 \x01(\tR\x06status\x12\x1f\n" + + "\vactive_jobs\x18\x03 \x01(\x05R\n" + + "activeJobs\x12%\n" + + "\x0ecompleted_jobs\x18\x04 \x01(\x05R\rcompletedJobs\x12\x1f\n" + + "\vfailed_jobs\x18\x05 \x01(\x05R\n" + + "failedJobs\x12)\n" + + "\x10total_detections\x18\x06 \x01(\x03R\x0ftotalDetections\x121\n" + + "\x15avg_execution_time_ms\x18\a \x01(\x02R\x12avgExecutionTimeMs\x12*\n" + + "\x11cpu_usage_percent\x18\b \x01(\x02R\x0fcpuUsagePercent\x12,\n" + + "\x12memory_usage_bytes\x18\t \x01(\x03R\x10memoryUsageBytes\x12A\n" + + "\x0elast_heartbeat\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\rlastHeartbeat\x12%\n" + + "\x0euptime_seconds\x18\v \x01(\x05R\ruptimeSeconds\"q\n" + + "\x12ListPluginsRequest\x12)\n" + + "\x10include_disabled\x18\x01 \x01(\bR\x0fincludeDisabled\x120\n" + + "\x14filter_by_capability\x18\x02 \x03(\tR\x12filterByCapability\"C\n" + + "\x13ListPluginsResponse\x12,\n" + + "\aplugins\x18\x01 \x03(\v2\x12.plugin.PluginInfoR\aplugins\"\xe1\x03\n" + + "\n" + + "PluginInfo\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12\x16\n" + + "\x06status\x18\x04 \x01(\tR\x06status\x12\"\n" + + "\fcapabilities\x18\x05 \x03(\tR\fcapabilities\x12.\n" + + "\x13max_concurrent_jobs\x18\x06 \x01(\x05R\x11maxConcurrentJobs\x12\x1f\n" + + "\vactive_jobs\x18\a \x01(\x05R\n" + + "activeJobs\x12=\n" + + "\fconnected_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\vconnectedAt\x12A\n" + + "\x0elast_heartbeat\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\rlastHeartbeat\x12<\n" + + "\bmetadata\x18\n" + + " \x03(\v2 .plugin.PluginInfo.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xba\x01\n" + + "\x0fListJobsRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x123\n" + + "\ffilter_state\x18\x02 \x01(\x0e2\x10.plugin.JobStateR\vfilterState\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\x12'\n" + + "\x0finclude_history\x18\x05 \x01(\bR\x0eincludeHistory\"X\n" + + "\x10ListJobsResponse\x12#\n" + + "\x04jobs\x18\x01 \x03(\v2\x0f.plugin.JobInfoR\x04jobs\x12\x1f\n" + + "\vtotal_count\x18\x02 \x01(\x05R\n" + + "totalCount\"\xb7\x03\n" + + "\aJobInfo\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x19\n" + + "\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x1b\n" + + "\tplugin_id\x18\x03 \x01(\tR\bpluginId\x12&\n" + + "\x05state\x18\x04 \x01(\x0e2\x10.plugin.JobStateR\x05state\x129\n" + + "\n" + + "created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "started_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" + + "\fcompleted_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12@\n" + + "\x0eexecution_time\x18\b \x01(\v2\x19.google.protobuf.DurationR\rexecutionTime\x12\x1f\n" + + "\vretry_count\x18\t \x01(\x05R\n" + + "retryCount\x12\x1d\n" + + "\n" + + "last_error\x18\n" + + " \x01(\tR\tlastError\",\n" + + "\x13GetJobStatusRequest\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\"\x96\x01\n" + + "\x14GetJobStatusResponse\x12*\n" + + "\bjob_info\x18\x01 \x01(\v2\x0f.plugin.JobInfoR\ajobInfo\x12)\n" + + "\x06result\x18\x02 \x01(\v2\x11.plugin.JobResultR\x06result\x12'\n" + + "\x0fdetailed_status\x18\x03 \x01(\tR\x0edetailedStatus\"\x94\x01\n" + + "\x14GetPluginLogsRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x14\n" + + "\x05lines\x18\x02 \x01(\x05R\x05lines\x12,\n" + + "\x12since_timestamp_ms\x18\x03 \x01(\x03R\x10sinceTimestampMs\x12\x1b\n" + + "\tlog_level\x18\x04 \x01(\tR\blogLevel\"C\n" + + "\x15GetPluginLogsResponse\x12*\n" + + "\aentries\x18\x01 \x03(\v2\x10.plugin.LogEntryR\aentries\"\xd2\x01\n" + + "\bLogEntry\x12!\n" + + "\ftimestamp_ms\x18\x01 \x01(\x03R\vtimestampMs\x12\x14\n" + + "\x05level\x18\x02 \x01(\tR\x05level\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x127\n" + + "\acontext\x18\x04 \x03(\v2\x1d.plugin.LogEntry.ContextEntryR\acontext\x1a:\n" + + "\fContextEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"j\n" + + "\x11SaveConfigRequest\x12,\n" + + "\x06config\x18\x01 \x01(\v2\x14.plugin.PluginConfigR\x06config\x12'\n" + + "\x0fbackup_existing\x18\x02 \x01(\bR\x0ebackupExisting\"o\n" + + "\x12SaveConfigResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12%\n" + + "\x0econfig_version\x18\x03 \x01(\x03R\rconfigVersion\"2\n" + + "\x13ReloadConfigRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\"J\n" + + "\x14ReloadConfigResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"2\n" + + "\x13EnablePluginRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\"J\n" + + "\x14EnablePluginResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"3\n" + + "\x14DisablePluginRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\"K\n" + + "\x15DisablePluginResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"\x91\x01\n" + + "\x17TriggerDetectionRequest\x12'\n" + + "\x0fdetection_types\x18\x01 \x03(\tR\x0edetectionTypes\x12+\n" + + "\x11target_datasource\x18\x02 \x01(\tR\x10targetDatasource\x12 \n" + + "\vparallelism\x18\x03 \x01(\x05R\vparallelism\"`\n" + + "\x18TriggerDetectionResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12*\n" + + "\x11triggered_job_ids\x18\x02 \x03(\tR\x0ftriggeredJobIds\"?\n" + + "\x10CancelJobRequest\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x14\n" + + "\x05force\x18\x02 \x01(\bR\x05force\"G\n" + + "\x11CancelJobResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"\x7f\n" + + "\x13PurgeHistoryRequest\x12.\n" + + "\x13before_timestamp_ms\x18\x01 \x01(\x03R\x11beforeTimestampMs\x128\n" + + "\x0fstates_to_purge\x18\x02 \x03(\x0e2\x10.plugin.JobStateR\rstatesToPurge\"Y\n" + + "\x14PurgeHistoryResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12'\n" + + "\x0frecords_deleted\x18\x02 \x01(\x05R\x0erecordsDeleted\"\xd6\x03\n" + + "\x0fExecutionRecord\x12\x15\n" + + "\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x19\n" + + "\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x1b\n" + + "\tplugin_id\x18\x03 \x01(\tR\bpluginId\x12&\n" + + "\x05state\x18\x04 \x01(\x0e2\x10.plugin.JobStateR\x05state\x129\n" + + "\n" + + "created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "started_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" + + "\fcompleted_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12,\n" + + "\apayload\x18\b \x01(\v2\x12.plugin.JobPayloadR\apayload\x12)\n" + + "\x06result\x18\t \x01(\v2\x11.plugin.JobResultR\x06result\x12\x1f\n" + + "\vretry_count\x18\n" + + " \x01(\x05R\n" + + "retryCount\x12\x1d\n" + + "\n" + + "last_error\x18\v \x01(\tR\tlastError\"\xb0\x01\n" + + "\x0eConfigSnapshot\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12,\n" + + "\x06config\x18\x02 \x01(\v2\x14.plugin.PluginConfigR\x06config\x129\n" + + "\n" + + "created_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x18\n" + + "\aversion\x18\x04 \x01(\x03R\aversion*\xc9\x01\n" + + "\x0fExecutionStatus\x12\x1c\n" + + "\x18EXECUTION_STATUS_UNKNOWN\x10\x00\x12\x1d\n" + + "\x19EXECUTION_STATUS_ACCEPTED\x10\x01\x12\x1c\n" + + "\x18EXECUTION_STATUS_RUNNING\x10\x02\x12\x1e\n" + + "\x1aEXECUTION_STATUS_COMPLETED\x10\x03\x12\x1b\n" + + "\x17EXECUTION_STATUS_FAILED\x10\x04\x12\x1e\n" + + "\x1aEXECUTION_STATUS_CANCELLED\x10\x05*b\n" + + "\fHealthStatus\x12\x19\n" + + "\x15HEALTH_STATUS_HEALTHY\x10\x00\x12\x1a\n" + + "\x16HEALTH_STATUS_DEGRADED\x10\x01\x12\x1b\n" + + "\x17HEALTH_STATUS_UNHEALTHY\x10\x02*\x99\x01\n" + + "\bJobState\x12\x15\n" + + "\x11JOB_STATE_PENDING\x10\x00\x12\x17\n" + + "\x13JOB_STATE_SCHEDULED\x10\x01\x12\x15\n" + + "\x11JOB_STATE_RUNNING\x10\x02\x12\x17\n" + + "\x13JOB_STATE_COMPLETED\x10\x03\x12\x14\n" + + "\x10JOB_STATE_FAILED\x10\x04\x12\x17\n" + + "\x13JOB_STATE_CANCELLED\x10\x052\xe7\x02\n" + + "\rPluginService\x12F\n" + + "\aConnect\x12\x1c.plugin.PluginConnectRequest\x1a\x1d.plugin.PluginConnectResponse\x12C\n" + + "\n" + + "ExecuteJob\x12\x19.plugin.ExecuteJobRequest\x1a\x1a.plugin.ExecuteJobResponse\x12B\n" + + "\fReportHealth\x12\x14.plugin.HealthReport\x1a\x1c.plugin.HealthReportResponse\x12@\n" + + "\tGetConfig\x12\x18.plugin.GetConfigRequest\x1a\x19.plugin.GetConfigResponse\x12C\n" + + "\fSubmitResult\x12\x18.plugin.JobResultRequest\x1a\x19.plugin.JobResultResponse2\x84\x03\n" + + "\x11AdminQueryService\x12O\n" + + "\x0eGetPluginStats\x12\x1d.plugin.GetPluginStatsRequest\x1a\x1e.plugin.GetPluginStatsResponse\x12F\n" + + "\vListPlugins\x12\x1a.plugin.ListPluginsRequest\x1a\x1b.plugin.ListPluginsResponse\x12=\n" + + "\bListJobs\x12\x17.plugin.ListJobsRequest\x1a\x18.plugin.ListJobsResponse\x12I\n" + + "\fGetJobStatus\x12\x1b.plugin.GetJobStatusRequest\x1a\x1c.plugin.GetJobStatusResponse\x12L\n" + + "\rGetPluginLogs\x12\x1c.plugin.GetPluginLogsRequest\x1a\x1d.plugin.GetPluginLogsResponse2\xa2\x04\n" + + "\x13AdminCommandService\x12C\n" + + "\n" + + "SaveConfig\x12\x19.plugin.SaveConfigRequest\x1a\x1a.plugin.SaveConfigResponse\x12I\n" + + "\fReloadConfig\x12\x1b.plugin.ReloadConfigRequest\x1a\x1c.plugin.ReloadConfigResponse\x12I\n" + + "\fEnablePlugin\x12\x1b.plugin.EnablePluginRequest\x1a\x1c.plugin.EnablePluginResponse\x12L\n" + + "\rDisablePlugin\x12\x1c.plugin.DisablePluginRequest\x1a\x1d.plugin.DisablePluginResponse\x12U\n" + + "\x10TriggerDetection\x12\x1f.plugin.TriggerDetectionRequest\x1a .plugin.TriggerDetectionResponse\x12@\n" + + "\tCancelJob\x12\x18.plugin.CancelJobRequest\x1a\x19.plugin.CancelJobResponse\x12I\n" + + "\fPurgeHistory\x12\x1b.plugin.PurgeHistoryRequest\x1a\x1c.plugin.PurgeHistoryResponseBQ\n" + + "\x10seaweedfs.pluginB\vPluginProtoZ0github.com/seaweedfs/seaweedfs/weed/pb/plugin_pbb\x06proto3" + +var ( + file_plugin_proto_rawDescOnce sync.Once + file_plugin_proto_rawDescData []byte +) + +func file_plugin_proto_rawDescGZIP() []byte { + file_plugin_proto_rawDescOnce.Do(func() { + file_plugin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_plugin_proto_rawDesc), len(file_plugin_proto_rawDesc))) + }) + return file_plugin_proto_rawDescData +} + +var file_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 58) +var file_plugin_proto_goTypes = []any{ + (ExecutionStatus)(0), // 0: plugin.ExecutionStatus + (HealthStatus)(0), // 1: plugin.HealthStatus + (JobState)(0), // 2: plugin.JobState + (*PluginConnectRequest)(nil), // 3: plugin.PluginConnectRequest + (*PluginConnectResponse)(nil), // 4: plugin.PluginConnectResponse + (*PluginCapabilities)(nil), // 5: plugin.PluginCapabilities + (*DetectionCapability)(nil), // 6: plugin.DetectionCapability + (*MaintenanceCapability)(nil), // 7: plugin.MaintenanceCapability + (*ExecuteJobRequest)(nil), // 8: plugin.ExecuteJobRequest + (*ExecuteJobResponse)(nil), // 9: plugin.ExecuteJobResponse + (*JobPayload)(nil), // 10: plugin.JobPayload + (*HealthReport)(nil), // 11: plugin.HealthReport + (*JobProgress)(nil), // 12: plugin.JobProgress + (*HealthReportResponse)(nil), // 13: plugin.HealthReportResponse + (*GetConfigRequest)(nil), // 14: plugin.GetConfigRequest + (*GetConfigResponse)(nil), // 15: plugin.GetConfigResponse + (*PluginConfig)(nil), // 16: plugin.PluginConfig + (*JobTypeConfig)(nil), // 17: plugin.JobTypeConfig + (*JobResultRequest)(nil), // 18: plugin.JobResultRequest + (*JobResult)(nil), // 19: plugin.JobResult + (*DetectionRecord)(nil), // 20: plugin.DetectionRecord + (*JobResultResponse)(nil), // 21: plugin.JobResultResponse + (*GetPluginStatsRequest)(nil), // 22: plugin.GetPluginStatsRequest + (*GetPluginStatsResponse)(nil), // 23: plugin.GetPluginStatsResponse + (*PluginStats)(nil), // 24: plugin.PluginStats + (*ListPluginsRequest)(nil), // 25: plugin.ListPluginsRequest + (*ListPluginsResponse)(nil), // 26: plugin.ListPluginsResponse + (*PluginInfo)(nil), // 27: plugin.PluginInfo + (*ListJobsRequest)(nil), // 28: plugin.ListJobsRequest + (*ListJobsResponse)(nil), // 29: plugin.ListJobsResponse + (*JobInfo)(nil), // 30: plugin.JobInfo + (*GetJobStatusRequest)(nil), // 31: plugin.GetJobStatusRequest + (*GetJobStatusResponse)(nil), // 32: plugin.GetJobStatusResponse + (*GetPluginLogsRequest)(nil), // 33: plugin.GetPluginLogsRequest + (*GetPluginLogsResponse)(nil), // 34: plugin.GetPluginLogsResponse + (*LogEntry)(nil), // 35: plugin.LogEntry + (*SaveConfigRequest)(nil), // 36: plugin.SaveConfigRequest + (*SaveConfigResponse)(nil), // 37: plugin.SaveConfigResponse + (*ReloadConfigRequest)(nil), // 38: plugin.ReloadConfigRequest + (*ReloadConfigResponse)(nil), // 39: plugin.ReloadConfigResponse + (*EnablePluginRequest)(nil), // 40: plugin.EnablePluginRequest + (*EnablePluginResponse)(nil), // 41: plugin.EnablePluginResponse + (*DisablePluginRequest)(nil), // 42: plugin.DisablePluginRequest + (*DisablePluginResponse)(nil), // 43: plugin.DisablePluginResponse + (*TriggerDetectionRequest)(nil), // 44: plugin.TriggerDetectionRequest + (*TriggerDetectionResponse)(nil), // 45: plugin.TriggerDetectionResponse + (*CancelJobRequest)(nil), // 46: plugin.CancelJobRequest + (*CancelJobResponse)(nil), // 47: plugin.CancelJobResponse + (*PurgeHistoryRequest)(nil), // 48: plugin.PurgeHistoryRequest + (*PurgeHistoryResponse)(nil), // 49: plugin.PurgeHistoryResponse + (*ExecutionRecord)(nil), // 50: plugin.ExecutionRecord + (*ConfigSnapshot)(nil), // 51: plugin.ConfigSnapshot + nil, // 52: plugin.PluginConnectRequest.MetadataEntry + nil, // 53: plugin.ExecuteJobRequest.ContextEntry + nil, // 54: plugin.JobPayload.ParametersEntry + nil, // 55: plugin.PluginConfig.PropertiesEntry + nil, // 56: plugin.PluginConfig.EnvironmentEntry + nil, // 57: plugin.JobTypeConfig.ParametersEntry + nil, // 58: plugin.JobResult.MetadataEntry + nil, // 59: plugin.PluginInfo.MetadataEntry + nil, // 60: plugin.LogEntry.ContextEntry + (*durationpb.Duration)(nil), // 61: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 62: google.protobuf.Timestamp +} +var file_plugin_proto_depIdxs = []int32{ + 5, // 0: plugin.PluginConnectRequest.capabilities_detail:type_name -> plugin.PluginCapabilities + 52, // 1: plugin.PluginConnectRequest.metadata:type_name -> plugin.PluginConnectRequest.MetadataEntry + 16, // 2: plugin.PluginConnectResponse.config:type_name -> plugin.PluginConfig + 6, // 3: plugin.PluginCapabilities.detection:type_name -> plugin.DetectionCapability + 7, // 4: plugin.PluginCapabilities.maintenance:type_name -> plugin.MaintenanceCapability + 10, // 5: plugin.ExecuteJobRequest.payload:type_name -> plugin.JobPayload + 61, // 6: plugin.ExecuteJobRequest.timeout:type_name -> google.protobuf.Duration + 53, // 7: plugin.ExecuteJobRequest.context:type_name -> plugin.ExecuteJobRequest.ContextEntry + 0, // 8: plugin.ExecuteJobResponse.status:type_name -> plugin.ExecutionStatus + 54, // 9: plugin.JobPayload.parameters:type_name -> plugin.JobPayload.ParametersEntry + 1, // 10: plugin.HealthReport.status:type_name -> plugin.HealthStatus + 12, // 11: plugin.HealthReport.job_progress:type_name -> plugin.JobProgress + 16, // 12: plugin.GetConfigResponse.config:type_name -> plugin.PluginConfig + 55, // 13: plugin.PluginConfig.properties:type_name -> plugin.PluginConfig.PropertiesEntry + 17, // 14: plugin.PluginConfig.job_types:type_name -> plugin.JobTypeConfig + 61, // 15: plugin.PluginConfig.health_check_interval:type_name -> google.protobuf.Duration + 61, // 16: plugin.PluginConfig.job_timeout:type_name -> google.protobuf.Duration + 56, // 17: plugin.PluginConfig.environment:type_name -> plugin.PluginConfig.EnvironmentEntry + 61, // 18: plugin.JobTypeConfig.interval:type_name -> google.protobuf.Duration + 57, // 19: plugin.JobTypeConfig.parameters:type_name -> plugin.JobTypeConfig.ParametersEntry + 0, // 20: plugin.JobResultRequest.status:type_name -> plugin.ExecutionStatus + 19, // 21: plugin.JobResultRequest.result:type_name -> plugin.JobResult + 61, // 22: plugin.JobResultRequest.execution_time:type_name -> google.protobuf.Duration + 20, // 23: plugin.JobResult.detections:type_name -> plugin.DetectionRecord + 58, // 24: plugin.JobResult.metadata:type_name -> plugin.JobResult.MetadataEntry + 24, // 25: plugin.GetPluginStatsResponse.stats:type_name -> plugin.PluginStats + 62, // 26: plugin.PluginStats.last_heartbeat:type_name -> google.protobuf.Timestamp + 27, // 27: plugin.ListPluginsResponse.plugins:type_name -> plugin.PluginInfo + 62, // 28: plugin.PluginInfo.connected_at:type_name -> google.protobuf.Timestamp + 62, // 29: plugin.PluginInfo.last_heartbeat:type_name -> google.protobuf.Timestamp + 59, // 30: plugin.PluginInfo.metadata:type_name -> plugin.PluginInfo.MetadataEntry + 2, // 31: plugin.ListJobsRequest.filter_state:type_name -> plugin.JobState + 30, // 32: plugin.ListJobsResponse.jobs:type_name -> plugin.JobInfo + 2, // 33: plugin.JobInfo.state:type_name -> plugin.JobState + 62, // 34: plugin.JobInfo.created_at:type_name -> google.protobuf.Timestamp + 62, // 35: plugin.JobInfo.started_at:type_name -> google.protobuf.Timestamp + 62, // 36: plugin.JobInfo.completed_at:type_name -> google.protobuf.Timestamp + 61, // 37: plugin.JobInfo.execution_time:type_name -> google.protobuf.Duration + 30, // 38: plugin.GetJobStatusResponse.job_info:type_name -> plugin.JobInfo + 19, // 39: plugin.GetJobStatusResponse.result:type_name -> plugin.JobResult + 35, // 40: plugin.GetPluginLogsResponse.entries:type_name -> plugin.LogEntry + 60, // 41: plugin.LogEntry.context:type_name -> plugin.LogEntry.ContextEntry + 16, // 42: plugin.SaveConfigRequest.config:type_name -> plugin.PluginConfig + 2, // 43: plugin.PurgeHistoryRequest.states_to_purge:type_name -> plugin.JobState + 2, // 44: plugin.ExecutionRecord.state:type_name -> plugin.JobState + 62, // 45: plugin.ExecutionRecord.created_at:type_name -> google.protobuf.Timestamp + 62, // 46: plugin.ExecutionRecord.started_at:type_name -> google.protobuf.Timestamp + 62, // 47: plugin.ExecutionRecord.completed_at:type_name -> google.protobuf.Timestamp + 10, // 48: plugin.ExecutionRecord.payload:type_name -> plugin.JobPayload + 19, // 49: plugin.ExecutionRecord.result:type_name -> plugin.JobResult + 16, // 50: plugin.ConfigSnapshot.config:type_name -> plugin.PluginConfig + 62, // 51: plugin.ConfigSnapshot.created_at:type_name -> google.protobuf.Timestamp + 3, // 52: plugin.PluginService.Connect:input_type -> plugin.PluginConnectRequest + 8, // 53: plugin.PluginService.ExecuteJob:input_type -> plugin.ExecuteJobRequest + 11, // 54: plugin.PluginService.ReportHealth:input_type -> plugin.HealthReport + 14, // 55: plugin.PluginService.GetConfig:input_type -> plugin.GetConfigRequest + 18, // 56: plugin.PluginService.SubmitResult:input_type -> plugin.JobResultRequest + 22, // 57: plugin.AdminQueryService.GetPluginStats:input_type -> plugin.GetPluginStatsRequest + 25, // 58: plugin.AdminQueryService.ListPlugins:input_type -> plugin.ListPluginsRequest + 28, // 59: plugin.AdminQueryService.ListJobs:input_type -> plugin.ListJobsRequest + 31, // 60: plugin.AdminQueryService.GetJobStatus:input_type -> plugin.GetJobStatusRequest + 33, // 61: plugin.AdminQueryService.GetPluginLogs:input_type -> plugin.GetPluginLogsRequest + 36, // 62: plugin.AdminCommandService.SaveConfig:input_type -> plugin.SaveConfigRequest + 38, // 63: plugin.AdminCommandService.ReloadConfig:input_type -> plugin.ReloadConfigRequest + 40, // 64: plugin.AdminCommandService.EnablePlugin:input_type -> plugin.EnablePluginRequest + 42, // 65: plugin.AdminCommandService.DisablePlugin:input_type -> plugin.DisablePluginRequest + 44, // 66: plugin.AdminCommandService.TriggerDetection:input_type -> plugin.TriggerDetectionRequest + 46, // 67: plugin.AdminCommandService.CancelJob:input_type -> plugin.CancelJobRequest + 48, // 68: plugin.AdminCommandService.PurgeHistory:input_type -> plugin.PurgeHistoryRequest + 4, // 69: plugin.PluginService.Connect:output_type -> plugin.PluginConnectResponse + 9, // 70: plugin.PluginService.ExecuteJob:output_type -> plugin.ExecuteJobResponse + 13, // 71: plugin.PluginService.ReportHealth:output_type -> plugin.HealthReportResponse + 15, // 72: plugin.PluginService.GetConfig:output_type -> plugin.GetConfigResponse + 21, // 73: plugin.PluginService.SubmitResult:output_type -> plugin.JobResultResponse + 23, // 74: plugin.AdminQueryService.GetPluginStats:output_type -> plugin.GetPluginStatsResponse + 26, // 75: plugin.AdminQueryService.ListPlugins:output_type -> plugin.ListPluginsResponse + 29, // 76: plugin.AdminQueryService.ListJobs:output_type -> plugin.ListJobsResponse + 32, // 77: plugin.AdminQueryService.GetJobStatus:output_type -> plugin.GetJobStatusResponse + 34, // 78: plugin.AdminQueryService.GetPluginLogs:output_type -> plugin.GetPluginLogsResponse + 37, // 79: plugin.AdminCommandService.SaveConfig:output_type -> plugin.SaveConfigResponse + 39, // 80: plugin.AdminCommandService.ReloadConfig:output_type -> plugin.ReloadConfigResponse + 41, // 81: plugin.AdminCommandService.EnablePlugin:output_type -> plugin.EnablePluginResponse + 43, // 82: plugin.AdminCommandService.DisablePlugin:output_type -> plugin.DisablePluginResponse + 45, // 83: plugin.AdminCommandService.TriggerDetection:output_type -> plugin.TriggerDetectionResponse + 47, // 84: plugin.AdminCommandService.CancelJob:output_type -> plugin.CancelJobResponse + 49, // 85: plugin.AdminCommandService.PurgeHistory:output_type -> plugin.PurgeHistoryResponse + 69, // [69:86] is the sub-list for method output_type + 52, // [52:69] is the sub-list for method input_type + 52, // [52:52] is the sub-list for extension type_name + 52, // [52:52] is the sub-list for extension extendee + 0, // [0:52] is the sub-list for field type_name +} + +func init() { file_plugin_proto_init() } +func file_plugin_proto_init() { + if File_plugin_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_plugin_proto_rawDesc), len(file_plugin_proto_rawDesc)), + NumEnums: 3, + NumMessages: 58, + NumExtensions: 0, + NumServices: 3, + }, + GoTypes: file_plugin_proto_goTypes, + DependencyIndexes: file_plugin_proto_depIdxs, + EnumInfos: file_plugin_proto_enumTypes, + MessageInfos: file_plugin_proto_msgTypes, + }.Build() + File_plugin_proto = out.File + file_plugin_proto_goTypes = nil + file_plugin_proto_depIdxs = nil +} diff --git a/weed/pb/plugin_pb/plugin_grpc.pb.go b/weed/pb/plugin_pb/plugin_grpc.pb.go new file mode 100644 index 000000000..229218016 --- /dev/null +++ b/weed/pb/plugin_pb/plugin_grpc.pb.go @@ -0,0 +1,903 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v6.33.4 +// source: plugin.proto + +package plugin_pb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + PluginService_Connect_FullMethodName = "/plugin.PluginService/Connect" + PluginService_ExecuteJob_FullMethodName = "/plugin.PluginService/ExecuteJob" + PluginService_ReportHealth_FullMethodName = "/plugin.PluginService/ReportHealth" + PluginService_GetConfig_FullMethodName = "/plugin.PluginService/GetConfig" + PluginService_SubmitResult_FullMethodName = "/plugin.PluginService/SubmitResult" +) + +// PluginServiceClient is the client API for PluginService service. +// +// 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. +// +// PluginService is the core service for plugin lifecycle and job execution +type PluginServiceClient interface { + // Connect registers a plugin with the master + Connect(ctx context.Context, in *PluginConnectRequest, opts ...grpc.CallOption) (*PluginConnectResponse, error) + // ExecuteJob processes a detection or maintenance job + ExecuteJob(ctx context.Context, in *ExecuteJobRequest, opts ...grpc.CallOption) (*ExecuteJobResponse, error) + // ReportHealth sends periodic health status updates + ReportHealth(ctx context.Context, in *HealthReport, opts ...grpc.CallOption) (*HealthReportResponse, error) + // GetConfig retrieves the latest configuration + GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) + // SubmitResult sends job execution results back to master + SubmitResult(ctx context.Context, in *JobResultRequest, opts ...grpc.CallOption) (*JobResultResponse, error) +} + +type pluginServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewPluginServiceClient(cc grpc.ClientConnInterface) PluginServiceClient { + return &pluginServiceClient{cc} +} + +func (c *pluginServiceClient) Connect(ctx context.Context, in *PluginConnectRequest, opts ...grpc.CallOption) (*PluginConnectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(PluginConnectResponse) + err := c.cc.Invoke(ctx, PluginService_Connect_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pluginServiceClient) ExecuteJob(ctx context.Context, in *ExecuteJobRequest, opts ...grpc.CallOption) (*ExecuteJobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExecuteJobResponse) + err := c.cc.Invoke(ctx, PluginService_ExecuteJob_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pluginServiceClient) ReportHealth(ctx context.Context, in *HealthReport, opts ...grpc.CallOption) (*HealthReportResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(HealthReportResponse) + err := c.cc.Invoke(ctx, PluginService_ReportHealth_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pluginServiceClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetConfigResponse) + err := c.cc.Invoke(ctx, PluginService_GetConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pluginServiceClient) SubmitResult(ctx context.Context, in *JobResultRequest, opts ...grpc.CallOption) (*JobResultResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(JobResultResponse) + err := c.cc.Invoke(ctx, PluginService_SubmitResult_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// PluginServiceServer is the server API for PluginService service. +// All implementations must embed UnimplementedPluginServiceServer +// for forward compatibility. +// +// PluginService is the core service for plugin lifecycle and job execution +type PluginServiceServer interface { + // Connect registers a plugin with the master + Connect(context.Context, *PluginConnectRequest) (*PluginConnectResponse, error) + // ExecuteJob processes a detection or maintenance job + ExecuteJob(context.Context, *ExecuteJobRequest) (*ExecuteJobResponse, error) + // ReportHealth sends periodic health status updates + ReportHealth(context.Context, *HealthReport) (*HealthReportResponse, error) + // GetConfig retrieves the latest configuration + GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) + // SubmitResult sends job execution results back to master + SubmitResult(context.Context, *JobResultRequest) (*JobResultResponse, error) + mustEmbedUnimplementedPluginServiceServer() +} + +// UnimplementedPluginServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedPluginServiceServer struct{} + +func (UnimplementedPluginServiceServer) Connect(context.Context, *PluginConnectRequest) (*PluginConnectResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Connect not implemented") +} +func (UnimplementedPluginServiceServer) ExecuteJob(context.Context, *ExecuteJobRequest) (*ExecuteJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ExecuteJob not implemented") +} +func (UnimplementedPluginServiceServer) ReportHealth(context.Context, *HealthReport) (*HealthReportResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReportHealth not implemented") +} +func (UnimplementedPluginServiceServer) GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") +} +func (UnimplementedPluginServiceServer) SubmitResult(context.Context, *JobResultRequest) (*JobResultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SubmitResult not implemented") +} +func (UnimplementedPluginServiceServer) mustEmbedUnimplementedPluginServiceServer() {} +func (UnimplementedPluginServiceServer) testEmbeddedByValue() {} + +// UnsafePluginServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to PluginServiceServer will +// result in compilation errors. +type UnsafePluginServiceServer interface { + mustEmbedUnimplementedPluginServiceServer() +} + +func RegisterPluginServiceServer(s grpc.ServiceRegistrar, srv PluginServiceServer) { + // If the following call pancis, it indicates UnimplementedPluginServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&PluginService_ServiceDesc, srv) +} + +func _PluginService_Connect_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PluginConnectRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PluginServiceServer).Connect(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PluginService_Connect_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PluginServiceServer).Connect(ctx, req.(*PluginConnectRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PluginService_ExecuteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExecuteJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PluginServiceServer).ExecuteJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PluginService_ExecuteJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PluginServiceServer).ExecuteJob(ctx, req.(*ExecuteJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PluginService_ReportHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(HealthReport) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PluginServiceServer).ReportHealth(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PluginService_ReportHealth_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PluginServiceServer).ReportHealth(ctx, req.(*HealthReport)) + } + return interceptor(ctx, in, info, handler) +} + +func _PluginService_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PluginServiceServer).GetConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PluginService_GetConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PluginServiceServer).GetConfig(ctx, req.(*GetConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PluginService_SubmitResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(JobResultRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PluginServiceServer).SubmitResult(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PluginService_SubmitResult_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PluginServiceServer).SubmitResult(ctx, req.(*JobResultRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// PluginService_ServiceDesc is the grpc.ServiceDesc for PluginService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var PluginService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "plugin.PluginService", + HandlerType: (*PluginServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Connect", + Handler: _PluginService_Connect_Handler, + }, + { + MethodName: "ExecuteJob", + Handler: _PluginService_ExecuteJob_Handler, + }, + { + MethodName: "ReportHealth", + Handler: _PluginService_ReportHealth_Handler, + }, + { + MethodName: "GetConfig", + Handler: _PluginService_GetConfig_Handler, + }, + { + MethodName: "SubmitResult", + Handler: _PluginService_SubmitResult_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "plugin.proto", +} + +const ( + AdminQueryService_GetPluginStats_FullMethodName = "/plugin.AdminQueryService/GetPluginStats" + AdminQueryService_ListPlugins_FullMethodName = "/plugin.AdminQueryService/ListPlugins" + AdminQueryService_ListJobs_FullMethodName = "/plugin.AdminQueryService/ListJobs" + AdminQueryService_GetJobStatus_FullMethodName = "/plugin.AdminQueryService/GetJobStatus" + AdminQueryService_GetPluginLogs_FullMethodName = "/plugin.AdminQueryService/GetPluginLogs" +) + +// AdminQueryServiceClient is the client API for AdminQueryService service. +// +// 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. +// +// AdminQueryService provides monitoring and diagnostics endpoints +type AdminQueryServiceClient interface { + // GetPluginStats returns statistics for all connected plugins + GetPluginStats(ctx context.Context, in *GetPluginStatsRequest, opts ...grpc.CallOption) (*GetPluginStatsResponse, error) + // ListPlugins returns information about all registered plugins + ListPlugins(ctx context.Context, in *ListPluginsRequest, opts ...grpc.CallOption) (*ListPluginsResponse, error) + // ListJobs returns current and historical job information + ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) + // GetJobStatus returns detailed status of a specific job + GetJobStatus(ctx context.Context, in *GetJobStatusRequest, opts ...grpc.CallOption) (*GetJobStatusResponse, error) + // GetPluginLogs returns logs from a specific plugin + GetPluginLogs(ctx context.Context, in *GetPluginLogsRequest, opts ...grpc.CallOption) (*GetPluginLogsResponse, error) +} + +type adminQueryServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewAdminQueryServiceClient(cc grpc.ClientConnInterface) AdminQueryServiceClient { + return &adminQueryServiceClient{cc} +} + +func (c *adminQueryServiceClient) GetPluginStats(ctx context.Context, in *GetPluginStatsRequest, opts ...grpc.CallOption) (*GetPluginStatsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPluginStatsResponse) + err := c.cc.Invoke(ctx, AdminQueryService_GetPluginStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminQueryServiceClient) ListPlugins(ctx context.Context, in *ListPluginsRequest, opts ...grpc.CallOption) (*ListPluginsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListPluginsResponse) + err := c.cc.Invoke(ctx, AdminQueryService_ListPlugins_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminQueryServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListJobsResponse) + err := c.cc.Invoke(ctx, AdminQueryService_ListJobs_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminQueryServiceClient) GetJobStatus(ctx context.Context, in *GetJobStatusRequest, opts ...grpc.CallOption) (*GetJobStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetJobStatusResponse) + err := c.cc.Invoke(ctx, AdminQueryService_GetJobStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminQueryServiceClient) GetPluginLogs(ctx context.Context, in *GetPluginLogsRequest, opts ...grpc.CallOption) (*GetPluginLogsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPluginLogsResponse) + err := c.cc.Invoke(ctx, AdminQueryService_GetPluginLogs_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AdminQueryServiceServer is the server API for AdminQueryService service. +// All implementations must embed UnimplementedAdminQueryServiceServer +// for forward compatibility. +// +// AdminQueryService provides monitoring and diagnostics endpoints +type AdminQueryServiceServer interface { + // GetPluginStats returns statistics for all connected plugins + GetPluginStats(context.Context, *GetPluginStatsRequest) (*GetPluginStatsResponse, error) + // ListPlugins returns information about all registered plugins + ListPlugins(context.Context, *ListPluginsRequest) (*ListPluginsResponse, error) + // ListJobs returns current and historical job information + ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) + // GetJobStatus returns detailed status of a specific job + GetJobStatus(context.Context, *GetJobStatusRequest) (*GetJobStatusResponse, error) + // GetPluginLogs returns logs from a specific plugin + GetPluginLogs(context.Context, *GetPluginLogsRequest) (*GetPluginLogsResponse, error) + mustEmbedUnimplementedAdminQueryServiceServer() +} + +// UnimplementedAdminQueryServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedAdminQueryServiceServer struct{} + +func (UnimplementedAdminQueryServiceServer) GetPluginStats(context.Context, *GetPluginStatsRequest) (*GetPluginStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPluginStats not implemented") +} +func (UnimplementedAdminQueryServiceServer) ListPlugins(context.Context, *ListPluginsRequest) (*ListPluginsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPlugins not implemented") +} +func (UnimplementedAdminQueryServiceServer) ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListJobs not implemented") +} +func (UnimplementedAdminQueryServiceServer) GetJobStatus(context.Context, *GetJobStatusRequest) (*GetJobStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetJobStatus not implemented") +} +func (UnimplementedAdminQueryServiceServer) GetPluginLogs(context.Context, *GetPluginLogsRequest) (*GetPluginLogsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPluginLogs not implemented") +} +func (UnimplementedAdminQueryServiceServer) mustEmbedUnimplementedAdminQueryServiceServer() {} +func (UnimplementedAdminQueryServiceServer) testEmbeddedByValue() {} + +// UnsafeAdminQueryServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AdminQueryServiceServer will +// result in compilation errors. +type UnsafeAdminQueryServiceServer interface { + mustEmbedUnimplementedAdminQueryServiceServer() +} + +func RegisterAdminQueryServiceServer(s grpc.ServiceRegistrar, srv AdminQueryServiceServer) { + // If the following call pancis, it indicates UnimplementedAdminQueryServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&AdminQueryService_ServiceDesc, srv) +} + +func _AdminQueryService_GetPluginStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPluginStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminQueryServiceServer).GetPluginStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminQueryService_GetPluginStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminQueryServiceServer).GetPluginStats(ctx, req.(*GetPluginStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminQueryService_ListPlugins_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPluginsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminQueryServiceServer).ListPlugins(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminQueryService_ListPlugins_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminQueryServiceServer).ListPlugins(ctx, req.(*ListPluginsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminQueryService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListJobsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminQueryServiceServer).ListJobs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminQueryService_ListJobs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminQueryServiceServer).ListJobs(ctx, req.(*ListJobsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminQueryService_GetJobStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetJobStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminQueryServiceServer).GetJobStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminQueryService_GetJobStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminQueryServiceServer).GetJobStatus(ctx, req.(*GetJobStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminQueryService_GetPluginLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPluginLogsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminQueryServiceServer).GetPluginLogs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminQueryService_GetPluginLogs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminQueryServiceServer).GetPluginLogs(ctx, req.(*GetPluginLogsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// AdminQueryService_ServiceDesc is the grpc.ServiceDesc for AdminQueryService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AdminQueryService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "plugin.AdminQueryService", + HandlerType: (*AdminQueryServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetPluginStats", + Handler: _AdminQueryService_GetPluginStats_Handler, + }, + { + MethodName: "ListPlugins", + Handler: _AdminQueryService_ListPlugins_Handler, + }, + { + MethodName: "ListJobs", + Handler: _AdminQueryService_ListJobs_Handler, + }, + { + MethodName: "GetJobStatus", + Handler: _AdminQueryService_GetJobStatus_Handler, + }, + { + MethodName: "GetPluginLogs", + Handler: _AdminQueryService_GetPluginLogs_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "plugin.proto", +} + +const ( + AdminCommandService_SaveConfig_FullMethodName = "/plugin.AdminCommandService/SaveConfig" + AdminCommandService_ReloadConfig_FullMethodName = "/plugin.AdminCommandService/ReloadConfig" + AdminCommandService_EnablePlugin_FullMethodName = "/plugin.AdminCommandService/EnablePlugin" + AdminCommandService_DisablePlugin_FullMethodName = "/plugin.AdminCommandService/DisablePlugin" + AdminCommandService_TriggerDetection_FullMethodName = "/plugin.AdminCommandService/TriggerDetection" + AdminCommandService_CancelJob_FullMethodName = "/plugin.AdminCommandService/CancelJob" + AdminCommandService_PurgeHistory_FullMethodName = "/plugin.AdminCommandService/PurgeHistory" +) + +// AdminCommandServiceClient is the client API for AdminCommandService service. +// +// 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. +// +// AdminCommandService provides administrative operations +type AdminCommandServiceClient interface { + // SaveConfig persists plugin configuration + SaveConfig(ctx context.Context, in *SaveConfigRequest, opts ...grpc.CallOption) (*SaveConfigResponse, error) + // ReloadConfig reloads configuration without restarting + ReloadConfig(ctx context.Context, in *ReloadConfigRequest, opts ...grpc.CallOption) (*ReloadConfigResponse, error) + // EnablePlugin enables a specific plugin + EnablePlugin(ctx context.Context, in *EnablePluginRequest, opts ...grpc.CallOption) (*EnablePluginResponse, error) + // DisablePlugin disables a specific plugin + DisablePlugin(ctx context.Context, in *DisablePluginRequest, opts ...grpc.CallOption) (*DisablePluginResponse, error) + // TriggerDetection manually triggers a detection for specific types + TriggerDetection(ctx context.Context, in *TriggerDetectionRequest, opts ...grpc.CallOption) (*TriggerDetectionResponse, error) + // CancelJob cancels a running job + CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*CancelJobResponse, error) + // PurgeHistory clears job history + PurgeHistory(ctx context.Context, in *PurgeHistoryRequest, opts ...grpc.CallOption) (*PurgeHistoryResponse, error) +} + +type adminCommandServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewAdminCommandServiceClient(cc grpc.ClientConnInterface) AdminCommandServiceClient { + return &adminCommandServiceClient{cc} +} + +func (c *adminCommandServiceClient) SaveConfig(ctx context.Context, in *SaveConfigRequest, opts ...grpc.CallOption) (*SaveConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SaveConfigResponse) + err := c.cc.Invoke(ctx, AdminCommandService_SaveConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminCommandServiceClient) ReloadConfig(ctx context.Context, in *ReloadConfigRequest, opts ...grpc.CallOption) (*ReloadConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReloadConfigResponse) + err := c.cc.Invoke(ctx, AdminCommandService_ReloadConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminCommandServiceClient) EnablePlugin(ctx context.Context, in *EnablePluginRequest, opts ...grpc.CallOption) (*EnablePluginResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(EnablePluginResponse) + err := c.cc.Invoke(ctx, AdminCommandService_EnablePlugin_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminCommandServiceClient) DisablePlugin(ctx context.Context, in *DisablePluginRequest, opts ...grpc.CallOption) (*DisablePluginResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DisablePluginResponse) + err := c.cc.Invoke(ctx, AdminCommandService_DisablePlugin_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminCommandServiceClient) TriggerDetection(ctx context.Context, in *TriggerDetectionRequest, opts ...grpc.CallOption) (*TriggerDetectionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(TriggerDetectionResponse) + err := c.cc.Invoke(ctx, AdminCommandService_TriggerDetection_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminCommandServiceClient) CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*CancelJobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CancelJobResponse) + err := c.cc.Invoke(ctx, AdminCommandService_CancelJob_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminCommandServiceClient) PurgeHistory(ctx context.Context, in *PurgeHistoryRequest, opts ...grpc.CallOption) (*PurgeHistoryResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(PurgeHistoryResponse) + err := c.cc.Invoke(ctx, AdminCommandService_PurgeHistory_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AdminCommandServiceServer is the server API for AdminCommandService service. +// All implementations must embed UnimplementedAdminCommandServiceServer +// for forward compatibility. +// +// AdminCommandService provides administrative operations +type AdminCommandServiceServer interface { + // SaveConfig persists plugin configuration + SaveConfig(context.Context, *SaveConfigRequest) (*SaveConfigResponse, error) + // ReloadConfig reloads configuration without restarting + ReloadConfig(context.Context, *ReloadConfigRequest) (*ReloadConfigResponse, error) + // EnablePlugin enables a specific plugin + EnablePlugin(context.Context, *EnablePluginRequest) (*EnablePluginResponse, error) + // DisablePlugin disables a specific plugin + DisablePlugin(context.Context, *DisablePluginRequest) (*DisablePluginResponse, error) + // TriggerDetection manually triggers a detection for specific types + TriggerDetection(context.Context, *TriggerDetectionRequest) (*TriggerDetectionResponse, error) + // CancelJob cancels a running job + CancelJob(context.Context, *CancelJobRequest) (*CancelJobResponse, error) + // PurgeHistory clears job history + PurgeHistory(context.Context, *PurgeHistoryRequest) (*PurgeHistoryResponse, error) + mustEmbedUnimplementedAdminCommandServiceServer() +} + +// UnimplementedAdminCommandServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedAdminCommandServiceServer struct{} + +func (UnimplementedAdminCommandServiceServer) SaveConfig(context.Context, *SaveConfigRequest) (*SaveConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveConfig not implemented") +} +func (UnimplementedAdminCommandServiceServer) ReloadConfig(context.Context, *ReloadConfigRequest) (*ReloadConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReloadConfig not implemented") +} +func (UnimplementedAdminCommandServiceServer) EnablePlugin(context.Context, *EnablePluginRequest) (*EnablePluginResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EnablePlugin not implemented") +} +func (UnimplementedAdminCommandServiceServer) DisablePlugin(context.Context, *DisablePluginRequest) (*DisablePluginResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DisablePlugin not implemented") +} +func (UnimplementedAdminCommandServiceServer) TriggerDetection(context.Context, *TriggerDetectionRequest) (*TriggerDetectionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TriggerDetection not implemented") +} +func (UnimplementedAdminCommandServiceServer) CancelJob(context.Context, *CancelJobRequest) (*CancelJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelJob not implemented") +} +func (UnimplementedAdminCommandServiceServer) PurgeHistory(context.Context, *PurgeHistoryRequest) (*PurgeHistoryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PurgeHistory not implemented") +} +func (UnimplementedAdminCommandServiceServer) mustEmbedUnimplementedAdminCommandServiceServer() {} +func (UnimplementedAdminCommandServiceServer) testEmbeddedByValue() {} + +// UnsafeAdminCommandServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AdminCommandServiceServer will +// result in compilation errors. +type UnsafeAdminCommandServiceServer interface { + mustEmbedUnimplementedAdminCommandServiceServer() +} + +func RegisterAdminCommandServiceServer(s grpc.ServiceRegistrar, srv AdminCommandServiceServer) { + // If the following call pancis, it indicates UnimplementedAdminCommandServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&AdminCommandService_ServiceDesc, srv) +} + +func _AdminCommandService_SaveConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SaveConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).SaveConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_SaveConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).SaveConfig(ctx, req.(*SaveConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminCommandService_ReloadConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReloadConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).ReloadConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_ReloadConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).ReloadConfig(ctx, req.(*ReloadConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminCommandService_EnablePlugin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EnablePluginRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).EnablePlugin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_EnablePlugin_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).EnablePlugin(ctx, req.(*EnablePluginRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminCommandService_DisablePlugin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DisablePluginRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).DisablePlugin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_DisablePlugin_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).DisablePlugin(ctx, req.(*DisablePluginRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminCommandService_TriggerDetection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TriggerDetectionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).TriggerDetection(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_TriggerDetection_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).TriggerDetection(ctx, req.(*TriggerDetectionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminCommandService_CancelJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CancelJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).CancelJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_CancelJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).CancelJob(ctx, req.(*CancelJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminCommandService_PurgeHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PurgeHistoryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCommandServiceServer).PurgeHistory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminCommandService_PurgeHistory_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCommandServiceServer).PurgeHistory(ctx, req.(*PurgeHistoryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// AdminCommandService_ServiceDesc is the grpc.ServiceDesc for AdminCommandService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AdminCommandService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "plugin.AdminCommandService", + HandlerType: (*AdminCommandServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SaveConfig", + Handler: _AdminCommandService_SaveConfig_Handler, + }, + { + MethodName: "ReloadConfig", + Handler: _AdminCommandService_ReloadConfig_Handler, + }, + { + MethodName: "EnablePlugin", + Handler: _AdminCommandService_EnablePlugin_Handler, + }, + { + MethodName: "DisablePlugin", + Handler: _AdminCommandService_DisablePlugin_Handler, + }, + { + MethodName: "TriggerDetection", + Handler: _AdminCommandService_TriggerDetection_Handler, + }, + { + MethodName: "CancelJob", + Handler: _AdminCommandService_CancelJob_Handler, + }, + { + MethodName: "PurgeHistory", + Handler: _AdminCommandService_PurgeHistory_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "plugin.proto", +}