// Copyright (C) 2019 Storj Labs, Inc. // See LICENSE for copying information. syntax = "proto3"; option go_package = "pb"; import "gogo.proto"; import "node.proto"; package inspector; service KadInspector { // CountNodes returns the number of nodes in the routing table rpc CountNodes(CountNodesRequest) returns (CountNodesResponse); // GetBuckets returns the k buckets from a Kademlia instance rpc GetBuckets(GetBucketsRequest) returns (GetBucketsResponse); // GetBucket returns the details of a single k bucket from the kademlia instance rpc GetBucket(GetBucketRequest) returns (GetBucketResponse); // PingNodes sends a PING RPC to a node and returns it's availability rpc PingNode(PingNodeRequest) returns (PingNodeResponse); // LookupNode triggers a Kademlia FindNode and returns the response rpc LookupNode(LookupNodeRequest) returns (LookupNodeResponse); } service OverlayInspector { // CountNodes returns the number of nodes in the cache rpc CountNodes(CountNodesRequest) returns (CountNodesResponse); } service StatDBInspector { // GetStats returns the stats for a particular node ID rpc GetStats(GetStatsRequest) returns (GetStatsResponse); // CreateStats creates a node with specified stats rpc CreateStats(CreateStatsRequest) returns (CreateStatsResponse); } // GetStats message GetStatsRequest { bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message GetStatsResponse { int64 audit_count = 1; double audit_ratio = 2; int64 uptime_count = 3; double uptime_ratio = 4; } // CreateStats message CreateStatsRequest { bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; int64 audit_count = 2; int64 audit_success_count = 3; int64 uptime_count = 4; int64 uptime_success_count = 5; } message CreateStatsResponse { } // CountNodes message CountNodesResponse { int64 count = 1; } message CountNodesRequest { } // GetBuckets message GetBucketsRequest { } message GetBucketsResponse { int64 total = 1; repeated bytes ids = 2 [(gogoproto.customtype) = "NodeID"]; } // GetBucket message GetBucketRequest { bytes id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message GetBucketResponse { bytes id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; repeated node.Node nodes = 2; } message Bucket { repeated node.Node nodes = 2; } message BucketList { repeated node.Node nodes = 1; } // PingNode message PingNodeRequest { bytes id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; string address = 2; } message PingNodeResponse { bool ok = 1; } message LookupNodeRequest { string id = 1; string address = 2; } message LookupNodeResponse { node.Node node = 1; node.NodeMetadata meta = 2; }