mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 05:40:42 +00:00 
			
		
		
		
	- Remove vendor'ed package go.pedge.io/pb/go/google/protobuf. - Update vendor'ed package github.com/libopenstorage/openstorage.
		
			
				
	
	
		
			472 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			472 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
| 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;
 | |
| }
 | |
| 
 | |
| enum IoProfile {
 | |
|   IO_PROFILE_SEQUENTIAL = 0;
 | |
|   IO_PROFILE_RANDOM= 1;
 | |
|   IO_PROFILE_DB = 2;
 | |
|   IO_PROFILE_DB_REMOTE = 3;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
|   // Volume is trying to be detached
 | |
|   VOLUME_STATE_TRY_DETACHING = 8;
 | |
|   // Volume is undergoing restore
 | |
|   VOLUME_STATE_RESTORE = 9;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| message Group {
 | |
|   // Id common identifier across volumes that have the same group.
 | |
|   string id = 1;
 | |
| }
 | |
| 
 | |
| // VolumeSpec has the properties needed to create a volume.
 | |
| message VolumeSpec {
 | |
|   // Ephemeral storage
 | |
|   bool ephemeral = 1;
 | |
|   // Size specifies the thin provisioned volume size.
 | |
|   uint64 size = 2;
 | |
|   // Format specifies the filesystem for this volume.
 | |
|   FSType format = 3;
 | |
|   // BlockSize for the filesystem.
 | |
|   int64 block_size = 4;
 | |
|   // HaLevel specifies the number of copies of data.
 | |
|   int64 ha_level = 5;
 | |
|   // Cos specifies the relative class of service.
 | |
|   CosType cos = 6;
 | |
|   // 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;
 | |
|   // SnapshotInterval in minutes, set to 0 to disable snapshots
 | |
|   uint32 snapshot_interval = 9;
 | |
|   // VolumeLabels configuration labels
 | |
|   map<string, string> volume_labels = 10;
 | |
|   // Shared is true if this volume can be remotely accessed.
 | |
|   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;
 | |
|   // Encrypted is true if this volume will be cryptographically secured.
 | |
|   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;
 | |
|   // Scale allows autocreation of volumes.
 | |
|   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
 | |
| message ReplicaSet {
 | |
|   repeated string nodes = 1;
 | |
| }
 | |
| 
 | |
| // RuntimeStateMap is a list of name value mapping of driver specific runtime 
 | |
| // information.
 | |
| message RuntimeStateMap {
 | |
|   map<string, string> runtime_state = 1;
 | |
| }
 | |
| 
 | |
| // Volume represents an abstract storage volume.
 | |
| // Volume represents an abstract storage volume.
 | |
| message Volume {
 | |
|   // Self referential volume ID.
 | |
|   string id = 1;
 | |
|   // Source specified seed data for the volume.
 | |
|   Source source = 2;
 | |
|   // 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;
 | |
|   // User specified locator
 | |
|   VolumeLocator locator = 5;
 | |
|   // Volume creation time
 | |
|   google.protobuf.Timestamp ctime = 6;
 | |
|   // User specified VolumeSpec
 | |
|   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;
 | |
| }
 | |
| 
 | |
| 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;
 | |
|   // UniqueTag helps identify a unique alert for a given resouce
 | |
|   string unique_tag = 10;
 | |
| }
 | |
| 
 | |
| 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;
 | |
|   // MountPath Path where the device is mounted
 | |
|   string mount_path = 3;
 | |
|   // DevicePath Path returned in attach
 | |
|   string device_path = 4;
 | |
|   // UnmountBeforeDetach is used to check whether unmount should be done before
 | |
|   // a detach
 | |
|   bool unmount_before_detach = 5;
 | |
| }
 | |
| 
 | |
| 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;
 | |
|   // additional options
 | |
|   // required for the Set operation.
 | |
|   map<string, string> options = 4;
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 |