mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-09-07 07:12:52 +02:00
rework protobuf messages
PubSub allows us to do schema validation, however it only allows one top level message at a time. Move other sub-message declarations under the main message declaration so that we can enable schema validation in the pubsub stream directly
This commit is contained in:
parent
2833d0e4f4
commit
f8a4a5d6af
7 changed files with 100 additions and 97 deletions
|
@ -12,7 +12,6 @@ fn main() {
|
|||
.type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]")
|
||||
.compile_protos(
|
||||
&[
|
||||
"src/pubsub/metadata.proto",
|
||||
"src/pubsub/network.proto",
|
||||
"src/pubsub/member.proto",
|
||||
"src/pubsub/member_status.proto",
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
syntax = "proto3";
|
||||
|
||||
import "metadata.proto";
|
||||
|
||||
package pbmessages;
|
||||
|
||||
message MemberChange {
|
||||
message Member {
|
||||
string device_id = 1;
|
||||
string network_id = 2;
|
||||
|
@ -29,9 +28,12 @@ message Member {
|
|||
bool sso_exepmt = 22; // Whether SSO is exempt
|
||||
uint64 auth_expiry_time = 23; // Authorization expiry time in milliseconds
|
||||
}
|
||||
message MemberChangeMetadata {
|
||||
string trace_id = 1;
|
||||
string controller_id = 2;
|
||||
}
|
||||
|
||||
message MemberChange {
|
||||
optional Member old = 1;
|
||||
optional Member new = 2;
|
||||
optional Metadata metadata = 3;
|
||||
optional MemberChangeMetadata metadata = 3;
|
||||
}
|
||||
|
|
|
@ -87,7 +87,8 @@ impl MemberListener {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::pubsub::change_listener::tests::setup_pubsub_emulator;
|
||||
use crate::pubsub::protobuf::pbmessages::{Member, MemberChange};
|
||||
use crate::pubsub::protobuf::pbmessages::member_change::Member;
|
||||
use crate::pubsub::protobuf::pbmessages::MemberChange;
|
||||
|
||||
use gcloud_googleapis::pubsub::v1::PubsubMessage;
|
||||
use gcloud_pubsub::client::{Client, ClientConfig};
|
||||
|
|
|
@ -2,10 +2,15 @@ syntax = "proto3";
|
|||
|
||||
package pbmessages;
|
||||
|
||||
import "metadata.proto";
|
||||
|
||||
|
||||
message MemberStatus {
|
||||
Metadata metadata = 1;
|
||||
message MemberStatusMetadata {
|
||||
string trace_id = 1;
|
||||
string controller_id = 2;
|
||||
}
|
||||
|
||||
MemberStatusMetadata metadata = 1;
|
||||
string network_id = 2;
|
||||
string member_id = 3;
|
||||
uint64 timestamp = 4; // Unix timestamp in milliseconds
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package pbmessages;
|
||||
|
||||
message Metadata {
|
||||
string trace_id = 1;
|
||||
string controller_id = 2;
|
||||
}
|
|
@ -1,9 +1,13 @@
|
|||
syntax = "proto3";
|
||||
|
||||
import "metadata.proto";
|
||||
|
||||
package pbmessages;
|
||||
|
||||
message NetworkChange {
|
||||
message NetworkChangeMetadata {
|
||||
string trace_id = 1;
|
||||
string controller_id = 2;
|
||||
}
|
||||
|
||||
message IPRange {
|
||||
string start_ip = 1; // Start of the IP range
|
||||
string end_ip = 2; // End of the IP range
|
||||
|
@ -55,8 +59,7 @@ message Network {
|
|||
optional string sso_provider = 23; // SSO provider
|
||||
}
|
||||
|
||||
message NetworkChange {
|
||||
optional Network old = 1;
|
||||
optional Network new = 2;
|
||||
optional Metadata metadata = 3;
|
||||
optional NetworkChangeMetadata metadata = 3;
|
||||
}
|
||||
|
|
|
@ -88,7 +88,8 @@ impl NetworkListener {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::pubsub::change_listener::tests::setup_pubsub_emulator;
|
||||
use crate::pubsub::protobuf::pbmessages::Network;
|
||||
use crate::pubsub::protobuf::pbmessages::network_change::Network;
|
||||
use crate::pubsub::protobuf::pbmessages::NetworkChange;
|
||||
|
||||
use gcloud_googleapis::pubsub::v1::PubsubMessage;
|
||||
use gcloud_pubsub::client::{Client, ClientConfig};
|
||||
|
|
Loading…
Add table
Reference in a new issue