@cofy-x/axern-sdk 0.2.0-bootstrap.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +169 -0
  2. package/dist/client/index.d.ts +63 -0
  3. package/dist/client/index.js +213 -0
  4. package/dist/config/index.d.ts +15 -0
  5. package/dist/config/index.js +65 -0
  6. package/dist/errors/index.d.ts +46 -0
  7. package/dist/errors/index.js +123 -0
  8. package/dist/generated/proto.d.ts +10 -0
  9. package/dist/generated/proto.js +80 -0
  10. package/dist/index.d.ts +19 -0
  11. package/dist/index.js +13 -0
  12. package/dist/node/archive.d.ts +9 -0
  13. package/dist/node/archive.js +41 -0
  14. package/dist/node/attached_process.d.ts +10 -0
  15. package/dist/node/attached_process.js +60 -0
  16. package/dist/node/capabilities.d.ts +8 -0
  17. package/dist/node/capabilities.js +51 -0
  18. package/dist/node/client.d.ts +44 -0
  19. package/dist/node/client.js +96 -0
  20. package/dist/node/computer_use.d.ts +12 -0
  21. package/dist/node/computer_use.js +81 -0
  22. package/dist/node/context.d.ts +22 -0
  23. package/dist/node/context.js +37 -0
  24. package/dist/node/exec.d.ts +12 -0
  25. package/dist/node/exec.js +93 -0
  26. package/dist/node/files.d.ts +18 -0
  27. package/dist/node/files.js +101 -0
  28. package/dist/node/process.d.ts +36 -0
  29. package/dist/node/process.js +144 -0
  30. package/dist/node/streams.d.ts +8 -0
  31. package/dist/node/streams.js +70 -0
  32. package/dist/proto/axern/common/file/v1/file.proto +31 -0
  33. package/dist/proto/axern/control/admin/v1/allocation_lifecycle.proto +91 -0
  34. package/dist/proto/axern/control/admin/v1/audit.proto +53 -0
  35. package/dist/proto/axern/control/admin/v1/node.proto +49 -0
  36. package/dist/proto/axern/control/admin/v1/reliability.proto +184 -0
  37. package/dist/proto/axern/control/admin/v1/service.proto +18 -0
  38. package/dist/proto/axern/control/admin/v1/storage.proto +81 -0
  39. package/dist/proto/axern/control/agentprofile/v1/agent_profile.proto +169 -0
  40. package/dist/proto/axern/control/catalog/v1/catalog.proto +127 -0
  41. package/dist/proto/axern/control/common/v1/common.proto +171 -0
  42. package/dist/proto/axern/control/environment/v1/environment.proto +94 -0
  43. package/dist/proto/axern/control/function/v1/function.proto +130 -0
  44. package/dist/proto/axern/control/function/v1/function_types.proto +233 -0
  45. package/dist/proto/axern/control/gateway/v1/gateway.proto +60 -0
  46. package/dist/proto/axern/control/namespace/v1/namespace.proto +52 -0
  47. package/dist/proto/axern/control/node/v1/node_control.proto +302 -0
  48. package/dist/proto/axern/control/quota/v1/quota.proto +113 -0
  49. package/dist/proto/axern/control/rollout/v1/rollout.proto +344 -0
  50. package/dist/proto/axern/control/run/v1/run.proto +88 -0
  51. package/dist/proto/axern/control/secret/v1/secret.proto +75 -0
  52. package/dist/proto/axern/control/service/v1/service.proto +96 -0
  53. package/dist/proto/axern/control/service/v1/service_event.proto +47 -0
  54. package/dist/proto/axern/control/service/v1/service_replica.proto +74 -0
  55. package/dist/proto/axern/control/service/v1/service_types.proto +155 -0
  56. package/dist/proto/axern/control/storage/v1/storage.proto +107 -0
  57. package/dist/proto/axern/control/storage/v1/storage_types.proto +125 -0
  58. package/dist/proto/axern/control/tunnel/v1/tunnel.proto +195 -0
  59. package/dist/proto/axern/data/artifact/v1/artifact.proto +19 -0
  60. package/dist/proto/axern/node/sandbox/v1/node.proto +652 -0
  61. package/dist/proto/axern/tunnel/v1/tunnel.proto +50 -0
  62. package/dist/resources.d.ts +13 -0
  63. package/dist/resources.js +107 -0
  64. package/dist/sandbox/archive.d.ts +8 -0
  65. package/dist/sandbox/archive.js +228 -0
  66. package/dist/sandbox/index.d.ts +86 -0
  67. package/dist/sandbox/index.js +204 -0
  68. package/dist/sandbox/lifecycle.d.ts +11 -0
  69. package/dist/sandbox/lifecycle.js +57 -0
  70. package/dist/tunnel/connector.d.ts +34 -0
  71. package/dist/tunnel/connector.js +141 -0
  72. package/dist/tunnel/control.d.ts +22 -0
  73. package/dist/tunnel/control.js +91 -0
  74. package/dist/tunnel/debug.d.ts +6 -0
  75. package/dist/tunnel/debug.js +19 -0
  76. package/dist/tunnel/relay.d.ts +17 -0
  77. package/dist/tunnel/relay.js +41 -0
  78. package/dist/tunnel/runtime.d.ts +34 -0
  79. package/dist/tunnel/runtime.js +118 -0
  80. package/dist/tunnel/session.d.ts +25 -0
  81. package/dist/tunnel/session.js +95 -0
  82. package/dist/tunnel/target.d.ts +7 -0
  83. package/dist/tunnel/target.js +28 -0
  84. package/dist/tunnel/types.d.ts +25 -0
  85. package/dist/tunnel/types.js +6 -0
  86. package/dist/types.d.ts +219 -0
  87. package/dist/types.js +8 -0
  88. package/dist/validation.d.ts +10 -0
  89. package/dist/validation.js +37 -0
  90. package/dist/version.d.ts +7 -0
  91. package/dist/version.js +9 -0
  92. package/package.json +57 -0
@@ -0,0 +1,52 @@
1
+ syntax = "proto3";
2
+
3
+ package axern.control.namespace.v1;
4
+
5
+ option go_package = "github.com/cofy-x/axern/sdk/go/gen/axern/control/namespace/v1;namespacev1";
6
+
7
+ import "google/protobuf/timestamp.proto";
8
+
9
+ message Namespace {
10
+ string namespace = 1;
11
+ int64 version = 2;
12
+ google.protobuf.Timestamp created_at = 3;
13
+ google.protobuf.Timestamp updated_at = 4;
14
+ }
15
+
16
+ message CreateNamespaceRequest {
17
+ string namespace = 1;
18
+ }
19
+
20
+ message CreateNamespaceResponse {
21
+ Namespace namespace = 1;
22
+ }
23
+
24
+ message GetNamespaceRequest {
25
+ string namespace = 1;
26
+ }
27
+
28
+ message GetNamespaceResponse {
29
+ Namespace namespace = 1;
30
+ }
31
+
32
+ message ListNamespacesRequest {
33
+ }
34
+
35
+ message ListNamespacesResponse {
36
+ repeated Namespace namespaces = 1;
37
+ }
38
+
39
+ message DeleteNamespaceRequest {
40
+ string namespace = 1;
41
+ }
42
+
43
+ message DeleteNamespaceResponse {
44
+ Namespace namespace = 1;
45
+ }
46
+
47
+ service NamespaceControl {
48
+ rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) {}
49
+ rpc GetNamespace(GetNamespaceRequest) returns (GetNamespaceResponse) {}
50
+ rpc ListNamespaces(ListNamespacesRequest) returns (ListNamespacesResponse) {}
51
+ rpc DeleteNamespace(DeleteNamespaceRequest) returns (DeleteNamespaceResponse) {}
52
+ }
@@ -0,0 +1,302 @@
1
+ syntax = "proto3";
2
+
3
+ package axern.control.node.v1;
4
+
5
+ option go_package = "github.com/cofy-x/axern/sdk/go/gen/axern/control/node/v1;nodev1";
6
+
7
+ import "axern/control/common/v1/common.proto";
8
+ import "axern/control/tunnel/v1/tunnel.proto";
9
+ import "google/protobuf/timestamp.proto";
10
+
11
+ enum RootfsType {
12
+ ROOTFS_TYPE_UNSPECIFIED = 0;
13
+ ROOTFS_TYPE_LOCAL = 1;
14
+ ROOTFS_TYPE_IMAGE = 2;
15
+ ROOTFS_TYPE_S3 = 3;
16
+ }
17
+
18
+ enum MountType {
19
+ MOUNT_TYPE_UNSPECIFIED = 0;
20
+ MOUNT_TYPE_LOCAL = 1;
21
+ MOUNT_TYPE_OCI = 2;
22
+ MOUNT_TYPE_NYDUS = 3;
23
+ MOUNT_TYPE_OSS = 4;
24
+ }
25
+
26
+ enum ComponentState {
27
+ COMPONENT_STATE_UNSPECIFIED = 0;
28
+ COMPONENT_STATE_READY = 1;
29
+ COMPONENT_STATE_WARMING = 2;
30
+ COMPONENT_STATE_DEGRADED = 3;
31
+ COMPONENT_STATE_ERROR = 4;
32
+ COMPONENT_STATE_DISABLED = 5;
33
+ }
34
+
35
+ enum NodeState {
36
+ NODE_STATE_UNSPECIFIED = 0;
37
+ NODE_STATE_READY = 1;
38
+ NODE_STATE_DRAINING = 2;
39
+ NODE_STATE_DISABLED = 3;
40
+ NODE_STATE_UNREACHABLE = 4;
41
+ }
42
+
43
+ message PoolState {
44
+ int32 using = 1;
45
+ int32 idle = 2;
46
+ int32 capacity = 3;
47
+ int32 unavailable = 4;
48
+ }
49
+
50
+ message ResourcesSummary {
51
+ int64 axnoded_committed_milli = 1;
52
+ int64 axnoded_used_milli = 2;
53
+ int64 axnoded_cpu_unbounded_count = 3;
54
+ int64 axnoded_committed_bytes = 4;
55
+ int64 axnoded_used_bytes = 5;
56
+ int64 axnoded_memory_unbounded_count = 6;
57
+ }
58
+
59
+ message PoolsSummary {
60
+ PoolState cgroup = 1;
61
+ PoolState interface = 2;
62
+ // Required aggregate runtime capacity contract owned by axnoded.
63
+ PoolState runtime_slots = 3;
64
+ }
65
+
66
+ message AxnodedSummary {
67
+ ComponentState state = 1;
68
+ bool ready = 2;
69
+ int32 running_containers = 3;
70
+ repeated string running_allocation_ids = 4;
71
+ repeated string active_allocation_ids = 5;
72
+ }
73
+
74
+ message ImagemgrSummary {
75
+ ComponentState state = 1;
76
+ bool reachable = 2;
77
+ int32 daemon_count = 3;
78
+ int32 mounted_image_count = 4;
79
+ int32 imported_image_count = 5;
80
+ }
81
+
82
+ message ImagefsdSummary {
83
+ ComponentState state = 1;
84
+ bool reachable = 2;
85
+ bool chunkdb_present = 3;
86
+ int64 chunk_count = 4;
87
+ int64 chunkdb_used_bytes = 5;
88
+ double chunkdb_usage_percent = 6;
89
+ }
90
+
91
+ message BpfNetSummary {
92
+ ComponentState state = 1;
93
+ bool enabled = 2;
94
+ bool ready = 3;
95
+ string mode = 4;
96
+ bool needs_snat_fallback = 5;
97
+ bool needs_full_dnat_fallback = 6;
98
+ bool needs_localhost_compat = 7;
99
+ }
100
+
101
+ message VolumedSummary {
102
+ ComponentState state = 1;
103
+ bool reachable = 2;
104
+ int32 published_volume_count = 3;
105
+ google.protobuf.Timestamp last_reconcile_at = 4;
106
+ string last_reconcile_error = 5;
107
+ int32 last_reconcile_retained_count = 6;
108
+ int32 last_reconcile_unpublished_count = 7;
109
+ int32 last_reconcile_active_allocation_count = 8;
110
+ int32 last_reconcile_stale_allocation_count = 9;
111
+ int32 last_reconcile_invalid_volume_count = 10;
112
+ }
113
+
114
+ message NodeStorageSummary {
115
+ string target = 1;
116
+ int64 capacity_bytes = 2;
117
+ int64 used_bytes = 3;
118
+ int64 available_bytes = 4;
119
+ int64 inodes_total = 5;
120
+ int64 inodes_used = 6;
121
+ int64 inodes_available = 7;
122
+ bool collected = 8;
123
+ string error = 9;
124
+ }
125
+
126
+ message ComponentsSummary {
127
+ AxnodedSummary axnoded = 1;
128
+ ImagemgrSummary imagemgr = 2;
129
+ ImagefsdSummary imagefsd = 3;
130
+ BpfNetSummary bpfnet = 4;
131
+ VolumedSummary volumed = 5;
132
+ }
133
+
134
+ message LocalitySummary {
135
+ string key = 1;
136
+ RootfsType rootfs_type = 2;
137
+ MountType mount_type = 3;
138
+ bool mounted = 4;
139
+ int32 retained_runtime_count = 5;
140
+ int32 retained_rootfs_count = 6;
141
+ int32 running_container_count = 7;
142
+ bool nydus_daemon_alive = 8;
143
+ int64 chunkdb_total_chunks = 9;
144
+ int64 chunkdb_used_bytes = 10;
145
+ int64 chunkdb_recent_access_age_secs = 11;
146
+ int64 peer_healthy_count = 12;
147
+ int64 peer_unhealthy_count = 13;
148
+ int64 peer_hinted_count = 14;
149
+ string environment_id = 15;
150
+ }
151
+
152
+ message NodeSummary {
153
+ google.protobuf.Timestamp collected_at = 1;
154
+ ResourcesSummary resources = 2;
155
+ PoolsSummary pools = 3;
156
+ ComponentsSummary components = 4;
157
+ repeated LocalitySummary locality = 5;
158
+ NodeState node_state = 6;
159
+ map<string, string> labels = 7;
160
+ repeated string capabilities = 8;
161
+ axern.control.common.v1.ResourceQuantity capacity = 9;
162
+ axern.control.common.v1.ResourceQuantity allocatable = 10;
163
+ repeated NodeStorageSummary storage = 11;
164
+ }
165
+
166
+ message RegisterNodeRequest {
167
+ string node_id = 1;
168
+ repeated string runtimes = 2;
169
+ string node_target = 3;
170
+ string node_auth_token = 4;
171
+ }
172
+
173
+ message RegisterNodeResponse {}
174
+
175
+ message ReportNodeRequest {
176
+ string node_id = 1;
177
+ repeated string runtimes = 2;
178
+ NodeSummary summary = 3;
179
+ string node_target = 4;
180
+ string node_auth_token = 5;
181
+ }
182
+
183
+ message ReportNodeResponse {}
184
+
185
+ message AllocationStatusObservation {
186
+ string allocation_id = 1;
187
+ int64 attempt = 2;
188
+ axern.control.common.v1.AllocationStatus status = 3;
189
+ int32 exit_code = 4;
190
+ bool exit_code_known = 5;
191
+ string message = 6;
192
+ google.protobuf.Timestamp observed_at = 7;
193
+ bool ready = 8;
194
+ string readiness_message = 9;
195
+ }
196
+
197
+ message BatchReportAllocationStatusRequest {
198
+ string node_id = 1;
199
+ string node_auth_token = 2;
200
+ repeated AllocationStatusObservation observations = 3;
201
+ }
202
+
203
+ message BatchReportAllocationStatusResponse {}
204
+
205
+ message WatchExecutionLeasesRequest {
206
+ string node_id = 1;
207
+ int64 after_revision = 2;
208
+ string node_auth_token = 3;
209
+ }
210
+
211
+ message WatchExecutionLeasesResponse {
212
+ repeated axern.control.common.v1.ExecutionLease leases = 1;
213
+ int64 current_revision = 2;
214
+ }
215
+
216
+ message WatchTunnelSessionsRequest {
217
+ string node_id = 1;
218
+ int64 after_revision = 2;
219
+ string node_auth_token = 3;
220
+ }
221
+
222
+ message NodeTunnelSession {
223
+ axern.control.tunnel.v1.TunnelSession session = 1;
224
+ string node_token = 2;
225
+ }
226
+
227
+ message WatchTunnelSessionsResponse {
228
+ repeated NodeTunnelSession sessions = 1;
229
+ int64 current_revision = 2;
230
+ }
231
+
232
+ message ReportTunnelSessionStatusRequest {
233
+ string session_id = 1;
234
+ axern.control.tunnel.v1.TunnelSessionStatus status = 2;
235
+ string reason = 3;
236
+ string bound_addr = 4;
237
+ string node_id = 5;
238
+ string node_auth_token = 6;
239
+ }
240
+
241
+ message ReportTunnelSessionStatusResponse {}
242
+
243
+ enum PlacementCandidateState {
244
+ PLACEMENT_CANDIDATE_STATE_UNSPECIFIED = 0;
245
+ PLACEMENT_CANDIDATE_STATE_ELIGIBLE = 1;
246
+ PLACEMENT_CANDIDATE_STATE_REJECTED = 2;
247
+ }
248
+
249
+ enum PlacementRejectionReason {
250
+ PLACEMENT_REJECTION_REASON_UNSPECIFIED = 0;
251
+ PLACEMENT_REJECTION_REASON_STALE_HEARTBEAT = 1;
252
+ PLACEMENT_REJECTION_REASON_STALE_SUMMARY = 2;
253
+ PLACEMENT_REJECTION_REASON_RUNTIME_UNSUPPORTED = 3;
254
+ PLACEMENT_REJECTION_REASON_AXNODED_NOT_READY = 4;
255
+ PLACEMENT_REJECTION_REASON_IMAGEMGR_UNAVAILABLE = 5;
256
+ PLACEMENT_REJECTION_REASON_IMAGEFSD_UNAVAILABLE = 6;
257
+ PLACEMENT_REJECTION_REASON_NODE_DRAINING = 7;
258
+ PLACEMENT_REJECTION_REASON_NODE_DISABLED = 8;
259
+ PLACEMENT_REJECTION_REASON_NODE_SELECTOR_MISMATCH = 9;
260
+ PLACEMENT_REJECTION_REASON_INSUFFICIENT_CPU = 10;
261
+ PLACEMENT_REJECTION_REASON_INSUFFICIENT_MEMORY = 11;
262
+ PLACEMENT_REJECTION_REASON_PORTS_UNSUPPORTED = 12;
263
+ PLACEMENT_REJECTION_REASON_NETWORK_UNSUPPORTED = 13;
264
+ PLACEMENT_REJECTION_REASON_CAPABILITY_UNSUPPORTED = 14;
265
+ PLACEMENT_REJECTION_REASON_NODE_RETIRED = 15;
266
+ }
267
+
268
+ message PlacementRank {
269
+ bool mounted_match = 1;
270
+ int32 retained_rootfs_count = 2;
271
+ int32 retained_runtime_count = 3;
272
+ bool nydus_daemon_alive = 4;
273
+ int64 chunkdb_recent_access_age_secs = 5;
274
+ int64 peer_healthy_count = 6;
275
+ int64 peer_hinted_count = 7;
276
+ bool bpfnet_preferred = 8;
277
+ bool idle_pool_ready = 9;
278
+ int64 axnoded_used_milli = 10;
279
+ int64 axnoded_used_bytes = 11;
280
+ int64 axnoded_active_instances = 12;
281
+ }
282
+
283
+ message PlacementCandidate {
284
+ string node_id = 1;
285
+ PlacementCandidateState state = 2;
286
+ repeated PlacementRejectionReason rejection_reasons = 3;
287
+ int64 heartbeat_age_secs = 4;
288
+ int64 summary_age_secs = 5;
289
+ PoolsSummary pools = 6;
290
+ ResourcesSummary resources = 7;
291
+ LocalitySummary locality = 8;
292
+ PlacementRank rank = 9;
293
+ }
294
+
295
+ service NodeControl {
296
+ rpc RegisterNode(RegisterNodeRequest) returns (RegisterNodeResponse) {}
297
+ rpc ReportNode(ReportNodeRequest) returns (ReportNodeResponse) {}
298
+ rpc BatchReportAllocationStatus(BatchReportAllocationStatusRequest) returns (BatchReportAllocationStatusResponse) {}
299
+ rpc WatchExecutionLeases(WatchExecutionLeasesRequest) returns (stream WatchExecutionLeasesResponse) {}
300
+ rpc WatchTunnelSessions(WatchTunnelSessionsRequest) returns (stream WatchTunnelSessionsResponse) {}
301
+ rpc ReportTunnelSessionStatus(ReportTunnelSessionStatusRequest) returns (ReportTunnelSessionStatusResponse) {}
302
+ }
@@ -0,0 +1,113 @@
1
+ syntax = "proto3";
2
+
3
+ package axern.control.quota.v1;
4
+
5
+ option go_package = "github.com/cofy-x/axern/sdk/go/gen/axern/control/quota/v1;quotav1";
6
+
7
+ import "google/protobuf/timestamp.proto";
8
+ import "google/protobuf/wrappers.proto";
9
+
10
+ message NamespaceQuota {
11
+ string namespace = 1;
12
+ google.protobuf.Int64Value cpu_milli_limit = 2;
13
+ google.protobuf.Int64Value memory_bytes_limit = 3;
14
+ int64 reserved_cpu_milli = 4;
15
+ int64 reserved_memory_bytes = 5;
16
+ google.protobuf.Int64Value available_cpu_milli = 6;
17
+ google.protobuf.Int64Value available_memory_bytes = 7;
18
+ int64 version = 8;
19
+ google.protobuf.Timestamp created_at = 9;
20
+ google.protobuf.Timestamp updated_at = 10;
21
+ }
22
+
23
+ enum NamespaceQuotaEventType {
24
+ NAMESPACE_QUOTA_EVENT_TYPE_UNSPECIFIED = 0;
25
+ NAMESPACE_QUOTA_EVENT_TYPE_ADMISSION_REJECTED = 1;
26
+ }
27
+
28
+ enum NamespaceQuotaEventWorkloadType {
29
+ NAMESPACE_QUOTA_EVENT_WORKLOAD_TYPE_UNSPECIFIED = 0;
30
+ NAMESPACE_QUOTA_EVENT_WORKLOAD_TYPE_RUN = 1;
31
+ NAMESPACE_QUOTA_EVENT_WORKLOAD_TYPE_SERVICE = 2;
32
+ }
33
+
34
+ enum NamespaceQuotaEventReason {
35
+ NAMESPACE_QUOTA_EVENT_REASON_UNSPECIFIED = 0;
36
+ NAMESPACE_QUOTA_EVENT_REASON_INSUFFICIENT_CPU = 1;
37
+ NAMESPACE_QUOTA_EVENT_REASON_INSUFFICIENT_MEMORY = 2;
38
+ NAMESPACE_QUOTA_EVENT_REASON_INSUFFICIENT_CPU_MEMORY = 3;
39
+ }
40
+
41
+ message NamespaceQuotaEvent {
42
+ string id = 1;
43
+ string namespace = 2;
44
+ NamespaceQuotaEventType type = 3;
45
+ NamespaceQuotaEventWorkloadType workload_type = 4;
46
+ string workload_id = 5;
47
+ string environment_id = 6;
48
+ NamespaceQuotaEventReason reason = 7;
49
+ int64 requested_cpu_milli = 8;
50
+ int64 reserved_cpu_milli = 9;
51
+ google.protobuf.Int64Value cpu_milli_limit = 10;
52
+ google.protobuf.Int64Value available_cpu_milli = 11;
53
+ int64 requested_memory_bytes = 12;
54
+ int64 reserved_memory_bytes = 13;
55
+ google.protobuf.Int64Value memory_bytes_limit = 14;
56
+ google.protobuf.Int64Value available_memory_bytes = 15;
57
+ string message = 16;
58
+ google.protobuf.Timestamp created_at = 17;
59
+ }
60
+
61
+ message GetNamespaceQuotaRequest {
62
+ string namespace = 1;
63
+ }
64
+
65
+ message GetNamespaceQuotaResponse {
66
+ NamespaceQuota quota = 1;
67
+ }
68
+
69
+ message ListNamespaceQuotasRequest {
70
+ }
71
+
72
+ message ListNamespaceQuotasResponse {
73
+ repeated NamespaceQuota quotas = 1;
74
+ }
75
+
76
+ message NamespaceQuotaLimits {
77
+ google.protobuf.Int64Value cpu_milli = 1;
78
+ google.protobuf.Int64Value memory_bytes = 2;
79
+ }
80
+
81
+ message SetNamespaceQuotaRequest {
82
+ string namespace = 1;
83
+ NamespaceQuotaLimits limits = 2;
84
+ }
85
+
86
+ message SetNamespaceQuotaResponse {
87
+ NamespaceQuota quota = 1;
88
+ }
89
+
90
+ message UnsetNamespaceQuotaRequest {
91
+ string namespace = 1;
92
+ }
93
+
94
+ message UnsetNamespaceQuotaResponse {
95
+ NamespaceQuota quota = 1;
96
+ }
97
+
98
+ message ListNamespaceQuotaEventsRequest {
99
+ string namespace = 1;
100
+ int32 limit = 2;
101
+ }
102
+
103
+ message ListNamespaceQuotaEventsResponse {
104
+ repeated NamespaceQuotaEvent events = 1;
105
+ }
106
+
107
+ service QuotaControl {
108
+ rpc GetNamespaceQuota(GetNamespaceQuotaRequest) returns (GetNamespaceQuotaResponse) {}
109
+ rpc ListNamespaceQuotas(ListNamespaceQuotasRequest) returns (ListNamespaceQuotasResponse) {}
110
+ rpc SetNamespaceQuota(SetNamespaceQuotaRequest) returns (SetNamespaceQuotaResponse) {}
111
+ rpc UnsetNamespaceQuota(UnsetNamespaceQuotaRequest) returns (UnsetNamespaceQuotaResponse) {}
112
+ rpc ListNamespaceQuotaEvents(ListNamespaceQuotaEventsRequest) returns (ListNamespaceQuotaEventsResponse) {}
113
+ }