forked from TrueCloudLab/frostfs-node
Anton Nikiforov
b0cf100427
Add more info in logs when node is going to shut down, but initialization process still in progress. Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
171 lines
5.3 KiB
Protocol Buffer
171 lines
5.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package control;
|
|
|
|
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/control";
|
|
|
|
// Signature of some message.
|
|
message Signature {
|
|
// Public key used for signing.
|
|
bytes key = 1 [json_name = "key"];
|
|
|
|
// Binary signature.
|
|
bytes sign = 2 [json_name = "signature"];
|
|
}
|
|
|
|
// Status of the storage node in the FrostFS network map.
|
|
enum NetmapStatus {
|
|
// Undefined status, default value.
|
|
STATUS_UNDEFINED = 0;
|
|
|
|
// Node is online.
|
|
ONLINE = 1;
|
|
|
|
// Node is offline.
|
|
OFFLINE = 2;
|
|
|
|
// Node is maintained by the owner.
|
|
MAINTENANCE = 3;
|
|
}
|
|
|
|
// FrostFS node description.
|
|
message NodeInfo {
|
|
// Public key of the FrostFS node in a binary format.
|
|
bytes public_key = 1 [json_name = "publicKey"];
|
|
|
|
// Ways to connect to a node.
|
|
repeated string addresses = 2 [json_name = "addresses"];
|
|
|
|
// Administrator-defined Attributes of the FrostFS Storage Node.
|
|
//
|
|
// `Attribute` is a Key-Value metadata pair. Key name must be a valid UTF-8
|
|
// string. Value can't be empty.
|
|
//
|
|
// Node's attributes are mostly used during Storage Policy evaluation to
|
|
// calculate object's placement and find a set of nodes satisfying policy
|
|
// requirements. There are some "well-known" node attributes common to all the
|
|
// Storage Nodes in the network and used implicitly with default values if not
|
|
// explicitly set:
|
|
//
|
|
// * Capacity \
|
|
// Total available disk space in Gigabytes.
|
|
// * Price \
|
|
// Price in GAS tokens for storing one GB of data during one Epoch. In node
|
|
// attributes it's a string presenting floating point number with comma or
|
|
// point delimiter for decimal part. In the Network Map it will be saved as
|
|
// 64-bit unsigned integer representing number of minimal token fractions.
|
|
// * Locode \
|
|
// Node's geographic location in
|
|
// [UN/LOCODE](https://www.unece.org/cefact/codesfortrade/codes_index.html)
|
|
// format approximated to the nearest point defined in standard.
|
|
// * Country \
|
|
// Country code in
|
|
// [ISO 3166-1_alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
|
|
// format. Calculated automatically from `Locode` attribute
|
|
// * Region \
|
|
// Country's administative subdivision where node is located. Calculated
|
|
// automatically from `Locode` attribute based on `SubDiv` field. Presented
|
|
// in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format.
|
|
// * City \
|
|
// City, town, village or rural area name where node is located written
|
|
// without diacritics . Calculated automatically from `Locode` attribute.
|
|
//
|
|
// For detailed description of each well-known attribute please see the
|
|
// corresponding section in FrostFS Technical specification.
|
|
message Attribute {
|
|
// Key of the node attribute.
|
|
string key = 1 [json_name = "key"];
|
|
|
|
// Value of the node attribute.
|
|
string value = 2 [json_name = "value"];
|
|
|
|
// Parent keys, if any. For example for `City` it could be `Region` and
|
|
// `Country`.
|
|
repeated string parents = 3 [json_name = "parents"];
|
|
}
|
|
// Carries list of the FrostFS node attributes in a key-value form. Key name
|
|
// must be a node-unique valid UTF-8 string. Value can't be empty. NodeInfo
|
|
// structures with duplicated attribute names or attributes with empty values
|
|
// will be considered invalid.
|
|
repeated Attribute attributes = 3 [json_name = "attributes"];
|
|
|
|
// Carries state of the FrostFS node.
|
|
NetmapStatus state = 4 [json_name = "state"];
|
|
}
|
|
|
|
// Network map structure.
|
|
message Netmap {
|
|
// Network map revision number.
|
|
uint64 epoch = 1 [json_name = "epoch"];
|
|
|
|
// Nodes presented in network.
|
|
repeated NodeInfo nodes = 2 [json_name = "nodes"];
|
|
}
|
|
|
|
// Health status of the storage node application.
|
|
enum HealthStatus {
|
|
// Undefined status, default value.
|
|
HEALTH_STATUS_UNDEFINED = 0;
|
|
|
|
// Storage node application is starting.
|
|
STARTING = 1;
|
|
|
|
// Storage node application is started and serves all services.
|
|
READY = 2;
|
|
|
|
// Storage node application is shutting down.
|
|
SHUTTING_DOWN = 3;
|
|
|
|
// Storage node application is reconfiguring.
|
|
RECONFIGURING = 4;
|
|
}
|
|
|
|
// Shard description.
|
|
message ShardInfo {
|
|
// ID of the shard.
|
|
bytes shard_ID = 1 [json_name = "shardID"];
|
|
|
|
// Path to shard's metabase.
|
|
string metabase_path = 2 [json_name = "metabasePath"];
|
|
|
|
// Shard's blobstor info.
|
|
repeated BlobstorInfo blobstor = 3 [json_name = "blobstor"];
|
|
|
|
// Path to shard's write-cache, empty if disabled.
|
|
string writecache_path = 4 [json_name = "writecachePath"];
|
|
|
|
// Work mode of the shard.
|
|
ShardMode mode = 5;
|
|
|
|
// Amount of errors occured.
|
|
uint32 errorCount = 6;
|
|
|
|
// Path to shard's pilorama storage.
|
|
string pilorama_path = 7 [json_name = "piloramaPath"];
|
|
}
|
|
|
|
// Blobstor component description.
|
|
message BlobstorInfo {
|
|
// Path to the root.
|
|
string path = 1 [json_name = "path"];
|
|
// Component type.
|
|
string type = 2 [json_name = "type"];
|
|
}
|
|
|
|
// Work mode of the shard.
|
|
enum ShardMode {
|
|
// Undefined mode, default value.
|
|
SHARD_MODE_UNDEFINED = 0;
|
|
|
|
// Read-write.
|
|
READ_WRITE = 1;
|
|
|
|
// Read-only.
|
|
READ_ONLY = 2;
|
|
|
|
// Degraded.
|
|
DEGRADED = 3;
|
|
|
|
// DegradedReadOnly.
|
|
DEGRADED_READ_ONLY = 4;
|
|
}
|