Skip to content

Commit 137d5aa

Browse files
committed
feat: add Connect-RPC service definitions for informer, metrics, resetter, tcp
Tier C plugin RPC migration: each gets its own v1 service block, with read-only methods marked NO_SIDE_EFFECTS so generated Connect handlers accept HTTP GET. informer/v1.InformerService - ListPlugins, GetWorkers, GetJobs (GET) - AddWorker, RemoveWorker metrics/v1.MetricsService - Add, Sub, Observe, Set (mutate prometheus state) - Declare, Unregister - CollectorType enum + Objective repeated message (proto3 disallows float-keyed maps) resetter/v1.ResetterService - ListPlugins (GET) - Reset tcp/v1.TCPService - Close
1 parent 4542a59 commit 137d5aa

4 files changed

Lines changed: 211 additions & 0 deletions

File tree

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
syntax = "proto3";
2+
3+
package informer.v1;
4+
5+
option go_package = "github.com/roadrunner-server/api-go/v6/informer/v1;informerV1";
6+
option php_metadata_namespace = "RoadRunner\\Informer\\DTO\\V1\\GPBMetadata";
7+
option php_namespace = "RoadRunner\\Informer\\DTO\\V1";
8+
9+
// ProcessState mirrors github.com/roadrunner-server/pool/v2/state/process.State —
10+
// one entry per OS-level worker process managed by a plugin.
11+
message ProcessState {
12+
int64 pid = 1;
13+
int64 status = 2;
14+
uint64 num_execs = 3;
15+
int64 created = 4;
16+
uint64 memory_usage = 5;
17+
double cpu_percent = 6;
18+
string command = 7;
19+
string status_str = 8;
20+
}
21+
22+
// JobState mirrors github.com/roadrunner-server/api-plugins/v6/jobs.State —
23+
// one entry per consumer pipeline registered with the jobs plugin.
24+
message JobState {
25+
string pipeline = 1;
26+
string driver = 2;
27+
string queue = 3;
28+
int64 active = 4;
29+
int64 delayed = 5;
30+
int64 reserved = 6;
31+
bool ready = 7;
32+
uint64 priority = 8;
33+
string error_message = 9;
34+
}
35+
36+
message ListPluginsRequest {}
37+
message PluginsList {
38+
repeated string plugins = 1;
39+
}
40+
41+
message GetWorkersRequest {
42+
string plugin = 1;
43+
}
44+
message WorkersList {
45+
repeated ProcessState workers = 1;
46+
}
47+
48+
message GetJobsRequest {
49+
string plugin = 1;
50+
}
51+
message JobsList {
52+
repeated JobState states = 1;
53+
}
54+
55+
message AddWorkerRequest {
56+
string plugin = 1;
57+
}
58+
message RemoveWorkerRequest {
59+
string plugin = 1;
60+
}
61+
62+
message Response {
63+
bool ok = 1;
64+
}
65+
66+
// InformerService exposes introspection RPCs for plugins that manage workers
67+
// (jobs, service, kv, etc.) and lets callers add or remove workers at runtime.
68+
service InformerService {
69+
rpc ListPlugins(ListPluginsRequest) returns (PluginsList) {
70+
option idempotency_level = NO_SIDE_EFFECTS;
71+
}
72+
rpc GetWorkers(GetWorkersRequest) returns (WorkersList) {
73+
option idempotency_level = NO_SIDE_EFFECTS;
74+
}
75+
rpc GetJobs(GetJobsRequest) returns (JobsList) {
76+
option idempotency_level = NO_SIDE_EFFECTS;
77+
}
78+
rpc AddWorker(AddWorkerRequest) returns (Response);
79+
rpc RemoveWorker(RemoveWorkerRequest) returns (Response);
80+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
syntax = "proto3";
2+
3+
package metrics.v1;
4+
5+
option go_package = "github.com/roadrunner-server/api-go/v6/metrics/v1;metricsV1";
6+
option php_metadata_namespace = "RoadRunner\\Metrics\\DTO\\V1\\GPBMetadata";
7+
option php_namespace = "RoadRunner\\Metrics\\DTO\\V1";
8+
9+
// CollectorType enumerates the supported Prometheus collector kinds. The
10+
// numeric values are stable; do not reuse or renumber.
11+
enum CollectorType {
12+
COLLECTOR_TYPE_UNSPECIFIED = 0;
13+
COLLECTOR_TYPE_HISTOGRAM = 1;
14+
COLLECTOR_TYPE_GAUGE = 2;
15+
COLLECTOR_TYPE_COUNTER = 3;
16+
COLLECTOR_TYPE_SUMMARY = 4;
17+
}
18+
19+
// Objective is a single (quantile, error) pair for Prometheus summary
20+
// collectors. proto3 forbids float-keyed maps, so summary objectives are
21+
// modelled as a repeated message rather than `map<double, double>`.
22+
message Objective {
23+
double quantile = 1;
24+
double error = 2;
25+
}
26+
27+
// Collector describes the shape of a single application-defined metric.
28+
// Mirrors github.com/roadrunner-server/metrics/v6.Collector.
29+
message Collector {
30+
string namespace = 1;
31+
string subsystem = 2;
32+
CollectorType type = 3;
33+
string help = 4;
34+
repeated string labels = 5;
35+
repeated double buckets = 6;
36+
repeated Objective objectives = 7;
37+
}
38+
39+
// Metric is a single observation against an already-declared collector.
40+
message Metric {
41+
string name = 1;
42+
double value = 2;
43+
repeated string labels = 3;
44+
}
45+
46+
// NamedCollector wraps a Collector with its registry name; used only by
47+
// Declare to register a new collector under that name.
48+
message NamedCollector {
49+
string name = 1;
50+
Collector collector = 2;
51+
}
52+
53+
message AddRequest { Metric metric = 1; }
54+
message SubRequest { Metric metric = 1; }
55+
message ObserveRequest { Metric metric = 1; }
56+
message SetRequest { Metric metric = 1; }
57+
58+
message DeclareRequest {
59+
NamedCollector collector = 1;
60+
}
61+
62+
message UnregisterRequest {
63+
string name = 1;
64+
}
65+
66+
message Response {
67+
bool ok = 1;
68+
}
69+
70+
// MetricsService exposes runtime metric mutation. All methods are write-side;
71+
// scraping happens on the separate Prometheus HTTP endpoint configured under
72+
// `metrics.address` and is not part of this RPC surface.
73+
service MetricsService {
74+
rpc Add(AddRequest) returns (Response);
75+
rpc Sub(SubRequest) returns (Response);
76+
rpc Observe(ObserveRequest) returns (Response);
77+
rpc Set(SetRequest) returns (Response);
78+
rpc Declare(DeclareRequest) returns (Response);
79+
rpc Unregister(UnregisterRequest) returns (Response);
80+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
syntax = "proto3";
2+
3+
package resetter.v1;
4+
5+
option go_package = "github.com/roadrunner-server/api-go/v6/resetter/v1;resetterV1";
6+
option php_metadata_namespace = "RoadRunner\\Resetter\\DTO\\V1\\GPBMetadata";
7+
option php_namespace = "RoadRunner\\Resetter\\DTO\\V1";
8+
9+
message ListPluginsRequest {}
10+
message PluginsList {
11+
repeated string plugins = 1;
12+
}
13+
14+
message ResetRequest {
15+
string plugin = 1;
16+
}
17+
18+
message Response {
19+
bool ok = 1;
20+
}
21+
22+
// ResetterService exposes the runtime reset surface for plugins that opt into
23+
// the resetter contract (jobs, service, etc.). Listing is read-only; Reset
24+
// triggers a per-plugin lifecycle reset.
25+
service ResetterService {
26+
rpc ListPlugins(ListPluginsRequest) returns (PluginsList) {
27+
option idempotency_level = NO_SIDE_EFFECTS;
28+
}
29+
rpc Reset(ResetRequest) returns (Response);
30+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
syntax = "proto3";
2+
3+
package tcp.v1;
4+
5+
option go_package = "github.com/roadrunner-server/api-go/v6/tcp/v1;tcpV1";
6+
option php_metadata_namespace = "RoadRunner\\Tcp\\DTO\\V1\\GPBMetadata";
7+
option php_namespace = "RoadRunner\\Tcp\\DTO\\V1";
8+
9+
message CloseRequest {
10+
string uuid = 1;
11+
}
12+
13+
message Response {
14+
bool ok = 1;
15+
}
16+
17+
// TCPService exposes runtime control over open TCP connections handled by the
18+
// tcp plugin. Close terminates a single connection identified by its UUID.
19+
service TCPService {
20+
rpc Close(CloseRequest) returns (Response);
21+
}

0 commit comments

Comments
 (0)