2016-12-19 23:17:11 +00:00
|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
|
|
|
|
package openstorage.api;
|
|
|
|
|
|
|
|
option go_package = "api";
|
|
|
|
option java_multiple_files = true;
|
|
|
|
option java_package = "com.openstorage.api";
|
|
|
|
|
|
|
|
enum Status {
|
|
|
|
STATUS_NONE = 0;
|
|
|
|
STATUS_INIT = 1;
|
|
|
|
STATUS_OK = 2;
|
|
|
|
STATUS_OFFLINE = 3;
|
|
|
|
STATUS_ERROR = 4;
|
|
|
|
STATUS_NOT_IN_QUORUM = 5;
|
|
|
|
STATUS_DECOMMISSION = 6;
|
|
|
|
STATUS_MAINTENANCE = 7;
|
|
|
|
STATUS_STORAGE_DOWN = 8;
|
|
|
|
STATUS_STORAGE_DEGRADED = 9;
|
|
|
|
STATUS_NEEDS_REBOOT = 10;
|
|
|
|
STATUS_STORAGE_REBALANCE = 11;
|
|
|
|
STATUS_STORAGE_DRIVE_REPLACE = 12;
|
|
|
|
// Add statuses before MAX and update the number for MAX
|
|
|
|
STATUS_MAX = 13;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum DriverType {
|
|
|
|
DRIVER_TYPE_NONE = 0;
|
|
|
|
DRIVER_TYPE_FILE = 1;
|
|
|
|
DRIVER_TYPE_BLOCK = 2;
|
|
|
|
DRIVER_TYPE_OBJECT = 3;
|
|
|
|
DRIVER_TYPE_CLUSTERED = 4;
|
|
|
|
DRIVER_TYPE_GRAPH = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum FSType {
|
|
|
|
FS_TYPE_NONE = 0;
|
|
|
|
FS_TYPE_BTRFS = 1;
|
|
|
|
FS_TYPE_EXT4 = 2;
|
|
|
|
FS_TYPE_FUSE = 3;
|
|
|
|
FS_TYPE_NFS = 4;
|
|
|
|
FS_TYPE_VFS = 5;
|
|
|
|
FS_TYPE_XFS = 6;
|
|
|
|
FS_TYPE_ZFS = 7;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum GraphDriverChangeType {
|
|
|
|
GRAPH_DRIVER_CHANGE_TYPE_NONE = 0;
|
|
|
|
GRAPH_DRIVER_CHANGE_TYPE_MODIFIED = 1;
|
|
|
|
GRAPH_DRIVER_CHANGE_TYPE_ADDED = 2;
|
|
|
|
GRAPH_DRIVER_CHANGE_TYPE_DELETED = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum SeverityType {
|
|
|
|
SEVERITY_TYPE_NONE = 0;
|
|
|
|
SEVERITY_TYPE_ALARM = 1;
|
|
|
|
SEVERITY_TYPE_WARNING = 2;
|
|
|
|
SEVERITY_TYPE_NOTIFY = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum ResourceType {
|
|
|
|
RESOURCE_TYPE_NONE = 0;
|
|
|
|
RESOURCE_TYPE_VOLUME = 1;
|
|
|
|
RESOURCE_TYPE_NODE = 2;
|
|
|
|
RESOURCE_TYPE_CLUSTER = 3;
|
|
|
|
RESOURCE_TYPE_DRIVE = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum AlertActionType {
|
|
|
|
ALERT_ACTION_TYPE_NONE = 0;
|
|
|
|
ALERT_ACTION_TYPE_DELETE = 1;
|
|
|
|
ALERT_ACTION_TYPE_CREATE = 2;
|
|
|
|
ALERT_ACTION_TYPE_UPDATE = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum VolumeActionParam {
|
|
|
|
VOLUME_ACTION_PARAM_NONE = 0;
|
|
|
|
// Maps to the boolean value false
|
|
|
|
VOLUME_ACTION_PARAM_OFF = 1;
|
|
|
|
// Maps to the boolean value true.
|
|
|
|
VOLUME_ACTION_PARAM_ON = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum CosType {
|
|
|
|
NONE = 0;
|
|
|
|
LOW = 1;
|
|
|
|
MEDIUM = 2;
|
|
|
|
HIGH = 3;
|
|
|
|
}
|
|
|
|
|
2017-09-07 01:53:38 +00:00
|
|
|
enum IoProfile {
|
|
|
|
IO_PROFILE_SEQUENTIAL = 0;
|
|
|
|
IO_PROFILE_RANDOM= 1;
|
|
|
|
IO_PROFILE_DB = 2;
|
|
|
|
IO_PROFILE_DB_REMOTE = 3;
|
|
|
|
}
|
|
|
|
|
2016-12-19 23:17:11 +00:00
|
|
|
// VolumeState represents the state of a volume.
|
|
|
|
enum VolumeState {
|
|
|
|
VOLUME_STATE_NONE = 0;
|
|
|
|
// Volume is transitioning to new state
|
|
|
|
VOLUME_STATE_PENDING = 1;
|
|
|
|
// Volume is ready to be assigned to a container
|
|
|
|
VOLUME_STATE_AVAILABLE = 2;
|
|
|
|
// Volume is attached to container
|
|
|
|
VOLUME_STATE_ATTACHED = 3;
|
|
|
|
// Volume is detached but associated with a container
|
|
|
|
VOLUME_STATE_DETACHED = 4;
|
|
|
|
// Volume detach is in progress
|
|
|
|
VOLUME_STATE_DETATCHING = 5;
|
|
|
|
// Volume is in error state
|
|
|
|
VOLUME_STATE_ERROR = 6;
|
|
|
|
// Volume is deleted, it will remain in this state
|
|
|
|
// while resources are asynchronously reclaimed
|
|
|
|
VOLUME_STATE_DELETED = 7;
|
2017-09-07 01:53:38 +00:00
|
|
|
// Volume is trying to be detached
|
|
|
|
VOLUME_STATE_TRY_DETACHING = 8;
|
|
|
|
// Volume is undergoing restore
|
|
|
|
VOLUME_STATE_RESTORE = 9;
|
2016-12-19 23:17:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// VolumeStatus represents a health status for a volume.
|
|
|
|
enum VolumeStatus {
|
|
|
|
VOLUME_STATUS_NONE = 0;
|
|
|
|
// Volume is not present
|
|
|
|
VOLUME_STATUS_NOT_PRESENT = 1;
|
|
|
|
// Volume is healthy
|
|
|
|
VOLUME_STATUS_UP = 2;
|
|
|
|
// Volume is in fail mode
|
|
|
|
VOLUME_STATUS_DOWN = 3;
|
|
|
|
// Volume is up but with degraded performance
|
|
|
|
// In a RAID group, this may indicate a problem with one or more drives
|
|
|
|
VOLUME_STATUS_DEGRADED = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum StorageMedium {
|
|
|
|
// Magnetic spinning disk.
|
|
|
|
STORAGE_MEDIUM_MAGNETIC = 0;
|
|
|
|
// SSD disk
|
|
|
|
STORAGE_MEDIUM_SSD = 1;
|
|
|
|
// NVME disk
|
|
|
|
STORAGE_MEDIUM_NVME = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum ClusterNotify {
|
|
|
|
// Node is down
|
|
|
|
CLUSTER_NOTIFY_DOWN = 0;
|
|
|
|
}
|
|
|
|
|
2017-09-07 01:53:38 +00:00
|
|
|
enum AttachState {
|
|
|
|
// Attached and available externally
|
|
|
|
ATTACH_STATE_EXTERNAL = 0;
|
|
|
|
// Attached but only available internally
|
|
|
|
ATTACH_STATE_INTERNAL = 1;
|
|
|
|
// Switching from External to Internal
|
|
|
|
ATTACH_STATE_INTERNAL_SWITCH = 2;
|
|
|
|
}
|
|
|
|
|
2016-12-19 23:17:11 +00:00
|
|
|
// StorageResource groups properties of a storage device.
|
|
|
|
message StorageResource {
|
|
|
|
// Id is the LUN identifier.
|
|
|
|
string id = 1;
|
|
|
|
// Path device path for this storage resource.
|
|
|
|
string path = 2;
|
|
|
|
// Storage medium.
|
|
|
|
StorageMedium medium = 3;
|
|
|
|
// True if this device is online.
|
|
|
|
bool online = 4;;
|
|
|
|
// IOPS
|
|
|
|
uint64 iops = 5;;
|
|
|
|
// SeqWrite
|
|
|
|
double seq_write = 6;
|
|
|
|
// SeqRead
|
|
|
|
double seq_read = 7;
|
|
|
|
// RandRW
|
|
|
|
double randRW = 8;
|
|
|
|
// Total size in bytes.
|
|
|
|
uint64 size = 9;;
|
|
|
|
// Physical Bytes used.
|
|
|
|
uint64 used = 10;
|
|
|
|
// True if this device is rotational.
|
|
|
|
string rotation_speed = 11;
|
|
|
|
// Timestamp of last time this device was scanned.
|
|
|
|
google.protobuf.Timestamp last_scan = 12;
|
|
|
|
}
|
|
|
|
|
2017-09-07 01:53:38 +00:00
|
|
|
// StoragePool groups different storage devices based on their CosType
|
|
|
|
message StoragePool {
|
|
|
|
// ID pool ID
|
|
|
|
int32 ID = 1;
|
|
|
|
// Cos reflects the capabilities of this drive pool
|
|
|
|
CosType Cos = 2;
|
|
|
|
// Medium underlying storage type
|
|
|
|
StorageMedium Medium = 3;
|
|
|
|
// RaidLevel storage raid level
|
|
|
|
string RaidLevel = 4;
|
|
|
|
// TotalSize of the pool
|
|
|
|
uint64 TotalSize = 7;
|
|
|
|
// Used size of the pool
|
|
|
|
uint64 Used = 8;
|
|
|
|
// Labels is a list of user defined name-value pairs
|
|
|
|
map<string, string> labels = 9;
|
|
|
|
}
|
|
|
|
|
2016-12-19 23:17:11 +00:00
|
|
|
// VolumeLocator is a structure that is attached to a volume
|
|
|
|
// and is used to carry opaque metadata.
|
|
|
|
message VolumeLocator {
|
|
|
|
// User friendly identifier
|
|
|
|
string name = 1;
|
|
|
|
// A set of name-value pairs that acts as search filters
|
|
|
|
map<string, string> volume_labels = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message Source {
|
|
|
|
// A volume id, if specified will create a clone of the parent.
|
|
|
|
string parent = 1;
|
|
|
|
// Seed will seed the volume from the specified URI
|
|
|
|
// Any additional config for the source comes from the labels in the spec
|
|
|
|
string seed = 2;
|
|
|
|
}
|
|
|
|
|
2017-09-07 01:53:38 +00:00
|
|
|
message Group {
|
|
|
|
// Id common identifier across volumes that have the same group.
|
|
|
|
string id = 1;
|
|
|
|
}
|
|
|
|
|
2016-12-19 23:17:11 +00:00
|
|
|
// VolumeSpec has the properties needed to create a volume.
|
|
|
|
message VolumeSpec {
|
|
|
|
// Ephemeral storage
|
|
|
|
bool ephemeral = 1;
|
2017-09-07 01:53:38 +00:00
|
|
|
// Size specifies the thin provisioned volume size.
|
2016-12-19 23:17:11 +00:00
|
|
|
uint64 size = 2;
|
2017-09-07 01:53:38 +00:00
|
|
|
// Format specifies the filesystem for this volume.
|
2016-12-19 23:17:11 +00:00
|
|
|
FSType format = 3;
|
2017-09-07 01:53:38 +00:00
|
|
|
// BlockSize for the filesystem.
|
2016-12-19 23:17:11 +00:00
|
|
|
int64 block_size = 4;
|
2017-09-07 01:53:38 +00:00
|
|
|
// HaLevel specifies the number of copies of data.
|
2016-12-19 23:17:11 +00:00
|
|
|
int64 ha_level = 5;
|
2017-09-07 01:53:38 +00:00
|
|
|
// Cos specifies the relative class of service.
|
2016-12-19 23:17:11 +00:00
|
|
|
CosType cos = 6;
|
2017-09-07 01:53:38 +00:00
|
|
|
// IoProfile provides a hint about application using this volume.
|
|
|
|
IoProfile io_profile = 7;
|
|
|
|
// Dedupe specifies if the volume data is to be de-duplicated.
|
|
|
|
bool dedupe = 8;
|
2016-12-19 23:17:11 +00:00
|
|
|
// SnapshotInterval in minutes, set to 0 to disable snapshots
|
2017-09-07 01:53:38 +00:00
|
|
|
uint32 snapshot_interval = 9;
|
|
|
|
// VolumeLabels configuration labels
|
|
|
|
map<string, string> volume_labels = 10;
|
2016-12-19 23:17:11 +00:00
|
|
|
// Shared is true if this volume can be remotely accessed.
|
2017-09-07 01:53:38 +00:00
|
|
|
bool shared = 11;
|
|
|
|
// ReplicaSet is the desired set of nodes for the volume data.
|
|
|
|
ReplicaSet replica_set = 12;
|
|
|
|
// Aggregatiokn level Specifies the number of parts the volume can be aggregated from.
|
|
|
|
uint32 aggregation_level = 13;
|
2016-12-19 23:17:11 +00:00
|
|
|
// Encrypted is true if this volume will be cryptographically secured.
|
2017-09-07 01:53:38 +00:00
|
|
|
bool encrypted = 14;
|
|
|
|
// Passphrase for an encrypted volume
|
|
|
|
string passphrase = 15;
|
|
|
|
// SnapshotSchedule a well known string that specifies when snapshots should be taken.
|
|
|
|
string snapshot_schedule = 16;
|
2016-12-19 23:17:11 +00:00
|
|
|
// Scale allows autocreation of volumes.
|
2017-09-07 01:53:38 +00:00
|
|
|
uint32 scale = 17;
|
|
|
|
// Sticky volumes cannot be deleted until the flag is removed.
|
|
|
|
bool sticky = 18;
|
|
|
|
// Group identifies a consistency group
|
|
|
|
Group group = 21;
|
|
|
|
// GroupEnforced is true if consistency group creation is enforced.
|
|
|
|
bool group_enforced = 22;
|
|
|
|
// Compressed is true if this volume is to be compressed.
|
|
|
|
bool compressed = 23;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ReplicaSet set of machine IDs (nodes) to which part of this volume is erasure
|
|
|
|
// coded - for clustered storage arrays
|
2016-12-19 23:17:11 +00:00
|
|
|
message ReplicaSet {
|
|
|
|
repeated string nodes = 1;
|
|
|
|
}
|
|
|
|
|
2017-09-07 01:53:38 +00:00
|
|
|
// RuntimeStateMap is a list of name value mapping of driver specific runtime
|
|
|
|
// information.
|
2016-12-19 23:17:11 +00:00
|
|
|
message RuntimeStateMap {
|
|
|
|
map<string, string> runtime_state = 1;
|
|
|
|
}
|
|
|
|
|
2017-09-07 01:53:38 +00:00
|
|
|
// Volume represents an abstract storage volume.
|
|
|
|
// Volume represents an abstract storage volume.
|
2016-12-19 23:17:11 +00:00
|
|
|
message Volume {
|
2017-09-07 01:53:38 +00:00
|
|
|
// Self referential volume ID.
|
2016-12-19 23:17:11 +00:00
|
|
|
string id = 1;
|
2017-09-07 01:53:38 +00:00
|
|
|
// Source specified seed data for the volume.
|
2016-12-19 23:17:11 +00:00
|
|
|
Source source = 2;
|
2017-09-07 01:53:38 +00:00
|
|
|
// Group volumes in the same group have the same group id.
|
|
|
|
Group group = 3;
|
|
|
|
// Readonly is true if this volume is to be mounted with readonly access.
|
|
|
|
bool readonly = 4;
|
2016-12-19 23:17:11 +00:00
|
|
|
// User specified locator
|
2017-09-07 01:53:38 +00:00
|
|
|
VolumeLocator locator = 5;
|
2016-12-19 23:17:11 +00:00
|
|
|
// Volume creation time
|
2017-09-07 01:53:38 +00:00
|
|
|
google.protobuf.Timestamp ctime = 6;
|
2016-12-19 23:17:11 +00:00
|
|
|
// User specified VolumeSpec
|
2017-09-07 01:53:38 +00:00
|
|
|
VolumeSpec spec = 7;
|
|
|
|
// Usage is bytes consumed by vtheis volume.
|
|
|
|
uint64 usage = 8;
|
|
|
|
// LastScan is the time when an integrity check was run.
|
|
|
|
google.protobuf.Timestamp last_scan = 9;
|
|
|
|
// Format specifies the filesytem for this volume.
|
|
|
|
FSType format = 10;
|
|
|
|
// Status is the availability status of this volume.
|
|
|
|
VolumeStatus status = 11;
|
|
|
|
// State is the current runtime state of this volume.
|
|
|
|
VolumeState state = 12;
|
|
|
|
// AttachedOn is the node instance identifier for clustered systems.
|
|
|
|
string attached_on = 13;
|
|
|
|
// AttachedState shows whether the device is attached for internal or external use.
|
|
|
|
AttachState attached_state = 14;
|
|
|
|
// DevicePath is the device exported by block device implementations.
|
|
|
|
string device_path = 15;
|
|
|
|
// SecureDevicePath is the device path for an encrypted volume.
|
|
|
|
string secure_device_path = 16;
|
|
|
|
// AttachPath is the mounted path in the host namespace.
|
|
|
|
repeated string attach_path = 17;
|
|
|
|
// AttachInfo is a list of name value mappings that provides attach information.
|
|
|
|
map<string, string> attach_info = 18;
|
|
|
|
// ReplicatSets storage for this volumefor clustered storage arrays.
|
|
|
|
repeated ReplicaSet replica_sets = 19;
|
|
|
|
// RuntimeState is a lst of name value mapping of driver specific runtime
|
|
|
|
// information.
|
|
|
|
repeated RuntimeStateMap runtime_state = 20;
|
|
|
|
// Error is the Last recorded error.
|
|
|
|
string error = 21;
|
2016-12-19 23:17:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Stats {
|
|
|
|
// Reads completed successfully
|
|
|
|
uint64 reads = 1;
|
|
|
|
// Time spent in reads in ms
|
|
|
|
uint64 read_ms = 2;
|
|
|
|
uint64 read_bytes = 3;
|
|
|
|
// Writes completed successfully
|
|
|
|
uint64 writes = 4;
|
|
|
|
// Time spent in writes in ms
|
|
|
|
uint64 write_ms = 5;
|
|
|
|
uint64 write_bytes = 6;
|
|
|
|
// IOs curently in progress
|
|
|
|
uint64 io_progress = 7;
|
|
|
|
// Time spent doing IOs ms
|
|
|
|
uint64 io_ms = 8;
|
|
|
|
// BytesUsed
|
|
|
|
uint64 bytes_used = 9;
|
|
|
|
// Interval in ms during which stats were collected
|
|
|
|
uint64 interval_ms = 10;
|
|
|
|
}
|
|
|
|
|
|
|
|
message Alert {
|
|
|
|
// Id for Alert
|
|
|
|
int64 id = 1;
|
|
|
|
// Severity of the Alert
|
|
|
|
SeverityType severity = 2;
|
|
|
|
// AlertType user defined alert type
|
|
|
|
int64 alert_type = 3;
|
|
|
|
// Message describing the Alert
|
|
|
|
string message = 4;
|
|
|
|
//Timestamp when Alert occured
|
|
|
|
google.protobuf.Timestamp timestamp = 5;
|
|
|
|
// ResourceId where Alert occured
|
|
|
|
string resource_id = 6;
|
|
|
|
// Resource where Alert occured
|
|
|
|
ResourceType resource = 7;
|
|
|
|
// Cleared Flag
|
|
|
|
bool cleared = 8;
|
|
|
|
// TTL in seconds for this Alert
|
|
|
|
uint64 ttl = 9;
|
2017-09-07 01:53:38 +00:00
|
|
|
// UniqueTag helps identify a unique alert for a given resouce
|
|
|
|
string unique_tag = 10;
|
2016-12-19 23:17:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Alerts {
|
|
|
|
repeated Alert alert = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message VolumeCreateRequest {
|
|
|
|
// User specified volume name and labels
|
|
|
|
VolumeLocator locator = 1;
|
|
|
|
// Source to create volume
|
|
|
|
Source source = 2;
|
|
|
|
// The storage spec for the volume
|
|
|
|
VolumeSpec spec = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message VolumeResponse {
|
|
|
|
string error = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message VolumeCreateResponse {
|
|
|
|
// ID of the newly created volume
|
|
|
|
string id = 1;
|
|
|
|
VolumeResponse volume_response = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// VolumeStateAction specifies desired actions.
|
|
|
|
message VolumeStateAction {
|
|
|
|
// Attach or Detach volume
|
|
|
|
VolumeActionParam attach = 1;
|
|
|
|
// Mount or unmount volume
|
|
|
|
VolumeActionParam mount = 2;
|
2017-09-07 01:53:38 +00:00
|
|
|
// MountPath Path where the device is mounted
|
2016-12-19 23:17:11 +00:00
|
|
|
string mount_path = 3;
|
2017-09-07 01:53:38 +00:00
|
|
|
// DevicePath Path returned in attach
|
2016-12-19 23:17:11 +00:00
|
|
|
string device_path = 4;
|
2017-09-07 01:53:38 +00:00
|
|
|
// UnmountBeforeDetach is used to check whether unmount should be done before
|
|
|
|
// a detach
|
|
|
|
bool unmount_before_detach = 5;
|
2016-12-19 23:17:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message VolumeSetRequest {
|
|
|
|
// User specified volume name and labels
|
|
|
|
VolumeLocator locator = 1;
|
|
|
|
// The storage spec for the volume
|
|
|
|
VolumeSpec spec = 2;
|
|
|
|
// State modification on this volume.
|
|
|
|
VolumeStateAction action = 3;
|
2017-09-07 01:53:38 +00:00
|
|
|
// additional options
|
|
|
|
// required for the Set operation.
|
|
|
|
map<string, string> options = 4;
|
2016-12-19 23:17:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message VolumeSetResponse {
|
|
|
|
Volume volume = 1;
|
|
|
|
VolumeResponse volume_response = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message SnapCreateRequest {
|
|
|
|
// volume id
|
|
|
|
string id = 1;
|
|
|
|
VolumeLocator locator = 2;
|
|
|
|
bool readonly = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message SnapCreateResponse {
|
|
|
|
VolumeCreateResponse volume_create_response = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message VolumeInfo {
|
|
|
|
string volume_id = 1;
|
|
|
|
string path = 2;
|
|
|
|
VolumeSpec storage = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
// GraphDriverChanges represent a list of changes between the filesystem layers
|
|
|
|
// specified by the ID and Parent. // Parent may be an empty string, in which
|
|
|
|
// case there is no parent.
|
|
|
|
// Where the Path is the filesystem path within the layered filesystem
|
|
|
|
message GraphDriverChanges {
|
|
|
|
string path = 1;
|
|
|
|
GraphDriverChangeType kind = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ClusterResponse {
|
|
|
|
string error = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ActiveRequest {
|
|
|
|
map<int64, string> ReqestKV = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ActiveRequests {
|
|
|
|
int64 RequestCount = 1;
|
|
|
|
repeated ActiveRequest ActiveRequest = 2;
|
|
|
|
}
|