e228d090e8
* working on put request for nsclient * working on put request for nsclient * netstate put * netstate put * wip testing client * wip - testing client and working through some errors * wip - testing client and working through some errors * put request works * put request works for client * get request working * get request working * get request working-minor edit * get request working-minor edit * list request works * list request works * working through delete error * working through delete error * fixed exp client, still working through delete error * fixed exp client, still working through delete error * delete works; fixed formatting issues * delete works; fixed formatting issues * deleted comment * deleted comment * resolving merge conflicts * resolving merge conflict * fixing merge conflict * implemented and modified kayloyans paths file * working on testing * added test for path_test.go * fixed string, read through netstate test * deleted env variables * initial commit for mocking out grpc client- got it working * mocked grpc client * mock put passed test * 2 tests pass for PUT with mock * put requests test pass, wip- want mini review * get tests pass mock * list test working * initial commit for list test * all list req. working, starting on delete tests * delete tests passed * cleaned up tests * resolved merge conflicts * resolved merge conflicts * fixed linter errors * fixed error found in travis * initial commit for fixes from PR comments * fixed pr comments and linting * added error handling for api creds, and rebased * fixes from dennis comments * fixed pr with dennis suggestioon * added copyrights to files * fixed casing per dennis great comment * fixed travis complaint on sprintf
119 lines
2.9 KiB
Protocol Buffer
119 lines
2.9 KiB
Protocol Buffer
// Copyright (C) 2018 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
syntax = "proto3";
|
|
package pointerdb;
|
|
|
|
import "timestamp.proto";
|
|
|
|
// PointerDB defines the interface for interacting with the network state persistence layer
|
|
service PointerDB {
|
|
// Put formats and hands off a file path to be saved to boltdb
|
|
rpc Put(PutRequest) returns (PutResponse);
|
|
// Get formats and hands off a file path to get a small value from boltdb
|
|
rpc Get(GetRequest) returns (GetResponse);
|
|
// List calls the bolt client's List function and returns all file paths
|
|
rpc List(ListRequest) returns (ListResponse);
|
|
// Delete formats and hands off a file path to delete from boltdb
|
|
rpc Delete(DeleteRequest) returns (DeleteResponse);
|
|
}
|
|
|
|
message RedundancyScheme {
|
|
enum SchemeType {
|
|
RS = 0;
|
|
}
|
|
SchemeType type = 1;
|
|
|
|
// these values apply to RS encoding
|
|
int64 min_req = 2; // minimum required for reconstruction
|
|
int64 total = 3; // total amount of pieces we generated
|
|
int64 repair_threshold = 4; // amount of pieces we need to drop to before triggering repair
|
|
int64 success_threshold = 5; // amount of pieces we need to store to call it a success
|
|
}
|
|
|
|
message EncryptionScheme {
|
|
enum EncryptionType {
|
|
AESGCM = 0;
|
|
SECRETBOX = 1;
|
|
// only allow authenticated encryption schemes
|
|
}
|
|
EncryptionType type = 1;
|
|
bytes encrypted_encryption_key = 2;
|
|
bytes encrypted_starting_nonce = 3;
|
|
}
|
|
|
|
message RemotePiece {
|
|
int64 piece_num = 1;
|
|
string node_id = 2;
|
|
}
|
|
|
|
message RemoteSegment {
|
|
RedundancyScheme redundancy = 1;
|
|
string piece_id = 2;
|
|
repeated RemotePiece remote_pieces = 3;
|
|
|
|
bytes merkle_root = 4; // root hash of the hashes of all of these pieces
|
|
}
|
|
|
|
message Pointer {
|
|
enum DataType {
|
|
INLINE = 0;
|
|
REMOTE = 1;
|
|
}
|
|
|
|
DataType type = 1;
|
|
|
|
bytes inline_segment = 3;
|
|
RemoteSegment remote = 4;
|
|
int64 size = 5;
|
|
|
|
google.protobuf.Timestamp creation_date = 6;
|
|
google.protobuf.Timestamp expiration_date = 7;
|
|
|
|
bytes metadata = 8;
|
|
}
|
|
|
|
// PutRequest is a request message for the Put rpc call
|
|
message PutRequest {
|
|
bytes path = 1;
|
|
Pointer pointer = 2;
|
|
bytes APIKey = 3;
|
|
}
|
|
|
|
// GetRequest is a request message for the Get rpc call
|
|
message GetRequest {
|
|
bytes path = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// ListRequest is a request message for the List rpc call
|
|
message ListRequest {
|
|
bytes starting_path_key = 1; // the Path key in the bucket to start listing
|
|
int64 limit = 2; // how many keys to list
|
|
bytes APIKey = 3;
|
|
}
|
|
|
|
// PutResponse is a response message for the Put rpc call
|
|
message PutResponse {
|
|
}
|
|
|
|
// GetResponse is a response message for the Get rpc call
|
|
message GetResponse {
|
|
bytes pointer = 1; // this is a Pointer type marshalled into bytes
|
|
}
|
|
|
|
// ListResponse is a response message for the List rpc call
|
|
message ListResponse {
|
|
repeated bytes paths = 1;
|
|
bool truncated = 2;
|
|
}
|
|
|
|
message DeleteRequest {
|
|
bytes path = 1;
|
|
bytes APIKey = 2;
|
|
}
|
|
|
|
// DeleteResponse is a response message for the Delete rpc call
|
|
message DeleteResponse {
|
|
}
|