95 lines
2.8 KiB
Protocol Buffer
95 lines
2.8 KiB
Protocol Buffer
// Copyright (C) 2018 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
syntax = "proto3";
|
|
package statdb;
|
|
|
|
// StatDB defines the interface for retrieving and updating storagenode stats
|
|
service StatDB {
|
|
// Create a db entry for the provided storagenode ID
|
|
rpc Create(CreateRequest) returns (CreateResponse);
|
|
// Get uses a storagenode ID to get that storagenode's stats
|
|
rpc Get(GetRequest) returns (GetResponse);
|
|
// Update updates storagenode stats for a single storagenode
|
|
rpc Update(UpdateRequest) returns (UpdateResponse);
|
|
// UpdateBatch updates storagenode stats for multiple farmers at a time
|
|
rpc UpdateBatch(UpdateBatchRequest) returns (UpdateBatchResponse);
|
|
// CreateEntryIfNotExists creates a db entry if it didn't exist
|
|
rpc CreateEntryIfNotExists(CreateEntryIfNotExistsRequest) returns (CreateEntryIfNotExistsResponse);
|
|
}
|
|
|
|
// Node is info for a updating a single storagenode, used in the Update rpc calls
|
|
message Node {
|
|
bytes node_id = 1;
|
|
repeated int64 latency_list = 2;
|
|
bool audit_success = 3;
|
|
bool is_up = 4;
|
|
bool update_latency = 5;
|
|
bool update_audit_success = 6;
|
|
bool update_uptime = 7;
|
|
}
|
|
|
|
// NodeStats is info about a single storagenode stored in the stats db
|
|
message NodeStats {
|
|
bytes node_id = 1;
|
|
int64 latency_90 = 2; // 90th percentile measure of storagenode latency
|
|
double audit_success_ratio = 3; // (auditSuccessCount / totalAuditCount)
|
|
double uptime_ratio = 4; // (uptimeCount / totalUptimeCheckCount)
|
|
}
|
|
|
|
// CreateRequest is a request message for the Create rpc call
|
|
message CreateRequest {
|
|
Node node = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// CreateResponse is a response message for the Create rpc call
|
|
message CreateResponse {
|
|
NodeStats stats = 1;
|
|
}
|
|
|
|
// GetRequest is a request message for the Get rpc call
|
|
message GetRequest {
|
|
bytes node_id = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// GetResponse is a response message for the Get rpc call
|
|
message GetResponse {
|
|
NodeStats stats = 1;
|
|
}
|
|
|
|
// UpdateRequest is a request message for the Update rpc call
|
|
message UpdateRequest {
|
|
Node node = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// UpdateRequest is a response message for the Update rpc call
|
|
message UpdateResponse {
|
|
NodeStats stats = 1;
|
|
}
|
|
|
|
// UpdateBatchRequest is a request message for the UpdateBatch rpc call
|
|
message UpdateBatchRequest {
|
|
repeated Node node_list = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// UpdateBatchResponse is a response message for the UpdateBatch rpc call
|
|
message UpdateBatchResponse {
|
|
repeated NodeStats stats_list = 1;
|
|
repeated Node failed_nodes = 2;
|
|
}
|
|
|
|
// CreateEntryIfNotExistsRequest is a request message for the CreateEntryIfNotExists rpc call
|
|
message CreateEntryIfNotExistsRequest {
|
|
Node node = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// CreateEntryIfNotExistsResponse is a response message for the CreateEntryIfNotExists rpc call
|
|
message CreateEntryIfNotExistsResponse {
|
|
NodeStats stats = 1;
|
|
}
|