storj/pkg/statdb/proto/statdb.proto
Maximillian von Briesen 36c394c295
StatDB (#144)
* add statdb proto and example client

* server logic

* update readme

* remove boltdb from service.go

* sqlite3

* add statdb server executable file

* create statdb node table if it does not exist already

* get UpdateBatch working

* update based on jt review

* remove some commented lines

* fix linting issues

* reformat

* apiKey -> APIKey

* update statdb client apiKey->APIKey
2018-07-27 17:11:44 -04:00

81 lines
2.2 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 farmer stats
service StatDB {
// Create a db entry for the provided farmer ID
rpc Create(CreateRequest) returns (CreateResponse);
// Get uses a farmer ID to get that farmer's stats
rpc Get(GetRequest) returns (GetResponse);
// Update updates farmer stats for a single farmer
rpc Update(UpdateRequest) returns (UpdateResponse);
// UpdateBatch updates farmer stats for multiple farmers at a time
rpc UpdateBatch(UpdateBatchRequest) returns (UpdateBatchResponse);
}
// Node is info for a updating a single farmer, 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 farmer stored in the stats db
message NodeStats {
bytes node_id = 1;
int64 latency_90 = 2; // 90th percentile measure of farmer 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;
}