/
mrealm.fbs
280 lines (189 loc) · 6.68 KB
/
mrealm.fbs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
// CrossbarFX - Copyright (c) typedef int GmbH. All rights reserved.
include "common.fbs";
namespace mrealm;
table ManagementRealm
{
/// ID of this object.
oid: oid_t (required);
/// Label for this object (not interpreted by CFC).
label: string;
/// Description for this object (not interpreted by CFC).
description: string;
/// Tags on this object.
tags: [string];
/// Name of this management realm (must be globally unique within CFC at any given point in time).
name: string (required, unique);
/// Time when the management realm was created.
created: uint64 (timestamp);
/// Owner organization of this management realm.
owner: oid_t;
/// CFC hosting node for this management realm.
cf_node: string;
/// CFC hosting router worker for this management realm.
cf_router_worker: string;
/// CFC hosting container worker for this management realm.
cf_container_worker: string;
}
table Node
{
/// ID of this object.
oid: oid_t (required);
/// Label for this object (not interpreted by CFC).
label: string;
/// Description for this object (not interpreted by CFC).
description: string;
/// Tags on this object.
tags: [string];
/// Name of this object (must be globally unique within CFC at any given point in time).
/// Also used for WAMP authid under which the node is authenticated on the management realm.
name: string (required, unique);
/// The WAMP-cryptosign node public key (32 bytes as HEX encoded string).
pubkey: string;
/// The WAMP ``realm`` the node will be joined on.
realm: string;
/// The WAMP-cryptosign ``authid`` the node will be authenticated as.
authid: string;
/// Optional WAMP authextra to be sent to the node when authenticating. CBOR serialized binary.
authextra: [uint8];
}
/// Cluster status for WebClusters or RouterClusters.
enum ClusterStatus: uint8
{
/// Unset status.
NONE = 0,
/// Initial status of a newly created web cluster.
STOPPED = 1,
/// The cluster is currently starting.
STARTING = 2,
/// The cluster is currently running.
RUNNING = 3,
/// The cluster is currently paused (it is serving, but the watch/change engine doesn't operate).
PAUSED = 4,
/// The cluster is currently stopping.
STOPPING = 5,
/// The cluster is stopped in an error state.
ERROR = 6,
/// The cluster is currently running, but degraded (not all components and services desired are actually running at this moment, but some have failed, but may be retried automatically).
DEGRADED = 7,
}
table ClusterNodeMembership
{
/// OID of web cluster to which to the node is added. A cluster can have zero or more nodes added.
cluster_oid: oid_t (required);
/// OID of the node to add to the cluster. A node can be added to more than one cluster.
node_oid: oid_t (required);
/// The desired (maximum) parallelism (in terms of CPU usage, given as number of workers) that the node should receive if it is active (not a standby node) in this cluster.
parallel: uint16;
/// Wheather this node acts as a standby node that only takes over work when an active node fails.
standby: bool;
}
table WebCluster
{
/// ID of this object.
oid: oid_t (required);
/// Label for this object (not interpreted by CFC).
label: string;
/// Description for this object (not interpreted by CFC).
description: string;
/// Tags on this object.
tags: [string];
/// Unique user assigned name.
name: string;
/// Current status of web cluster.
status: ClusterStatus;
/// IP version, either 4 for 6
tcp_version: byte;
/// IP listening port
tcp_port: uint16;
/// enable TCP port sharing
tcp_shared: bool;
/// listen on this interface
tcp_interface: string;
/// TCP accept backlog queue size
tcp_backlog: int;
/// TLS server private key to use
tls_key: string;
/// TLS server certificate to use
tls_certificate: string;
/// TLS certificate chain
tls_chain_certificates: [string];
/// CA certificates to use
tls_ca_certificates: [string];
/// DH parameter file
tls_ciphers: string;
/// Ciphers list
tls_dhparam: string;
/// HTTP client inactivity timeout
http_client_timeout: int;
/// enable HTTP strict transport security (HSTS)
http_hsts: bool;
/// HSTS maximum age to announce
http_hsts_max_age: int;
/// enable Web request access logging
http_access_log: bool;
/// enable tracebacks when running into Web errors
http_display_tracebacks: bool;
}
table RouterCluster
{
/// ID of this object.
oid: oid_t (required);
/// Label for this object (not interpreted by CFC).
label: string;
/// Description for this object (not interpreted by CFC).
description: string;
/// Tags on this object.
tags: [string];
/// Unique user assigned name.
name: string;
/// Current status of web cluster.
status: ClusterStatus;
}
/// Status of RouterWorkerGroups.
enum WorkerGroupStatus: uint8
{
/// Unset status.
NONE = 0,
/// Initial status of a newly created worker group.
STOPPED = 1,
/// The worker group is currently starting.
STARTING = 2,
/// The worker group is currently running.
RUNNING = 3,
/// The worker group is currently paused (it is serving, but the watch/change engine doesn't operate).
PAUSED = 4,
/// The worker group is currently stopping.
STOPPING = 5,
/// The worker group is stopped in an error state.
ERROR = 6,
/// The worker group is currently running, but degraded (not all components and services desired are actually running at this moment, but some have failed, but may be retried automatically).
DEGRADED = 7,
}
table RouterWorkerGroup
{
/// ID of this object.
oid: oid_t (required);
/// Label for this object (not interpreted by CFC).
label: string;
/// Description for this object (not interpreted by CFC).
description: string;
/// Tags on this object.
tags: [string];
/// Unique user assigned name.
name: string;
/// Current status of worker group.
status: WorkerGroupStatus;
}
table RouterWorkerGroupClusterPlacement
{
/// OID of this worker-to-cluster placement.
oid: oid_t (required);
/// OID of (router) worker group this placement applies to.
worker_group_oid: oid_t (required);
/// OID of cluster onto which the worker is placed.
cluster_oid: oid_t (required);
/// OID of the node onto which the worker is placed.
node_oid: oid_t (required);
/// Local worker name on the node onto which the worker is placed.
worker_name: string;
}