Skip to content

Latest commit

 

History

History
346 lines (177 loc) · 10.8 KB

lvmd-protocol.md

File metadata and controls

346 lines (177 loc) · 10.8 KB

Protocol Documentation

Table of Contents

Top

pkg/lvmd/proto/lvmd.proto

LVMd manages logical volumes of an LVM volume group.

The protocol consists of two services:

  • VGService provides information of the volume group.
  • LVService provides management functions for logical volumes on the volume group.

CreateLVRequest

Represents the input for CreateLV.

Field Type Label Description
name string The logical volume name.
size_gb uint64 Deprecated. Volume size in GiB.
tags string repeated Tags to add to the volume during creation
device_class string
lvcreate_option_class string
size_bytes int64 Volume size in canonical CSI bytes.

CreateLVResponse

Represents the response of CreateLV.

Field Type Label Description
volume LogicalVolume Information of the created volume.

CreateLVSnapshotRequest

Field Type Label Description
name string The logical volume name.
tags string repeated Tags to add to the volume during creation
device_class string
source_volume string Source lv of snapshot.
size_gb uint64 Deprecated. Volume size in GiB.
access_type string Access type of snapshot
size_bytes int64 Volume size in canonical CSI bytes.

CreateLVSnapshotResponse

Field Type Label Description
snapshot LogicalVolume Information of the created snapshot lv.

Empty

GetFreeBytesRequest

Field Type Label Description
device_class string

GetFreeBytesResponse

Represents the response of GetFreeBytes.

Field Type Label Description
free_bytes uint64 Free space of the volume group in bytes.

GetLVListRequest

Field Type Label Description
device_class string

GetLVListResponse

Represents the response of GetLVList.

Field Type Label Description
volumes LogicalVolume repeated Information of volumes.

LogicalVolume

Represents a logical volume.

Field Type Label Description
name string The logical volume name.
size_gb uint64 Deprecated. Volume size in GiB.
dev_major uint32 Device major number.
dev_minor uint32 Device minor number.
tags string repeated Tags to add to the volume during creation
size_bytes int64 Volume size in canonical CSI bytes.
path string Path to the lv as per lvm.
attr string Attributes of the lv.

RemoveLVRequest

Represents the input for RemoveLV.

Field Type Label Description
name string The logical volume name.
device_class string

ResizeLVRequest

Represents the input for ResizeLV.

The volume must already exist. The volume size will be set to exactly "size_gb".

Field Type Label Description
name string The logical volume name.
size_gb uint64 Deprecated. Volume size in GiB.
size_bytes int64 Volume size in canonical CSI bytes.
device_class string

ThinPoolItem

Represents the details of thinpool.

Field Type Label Description
data_percent double Data percent occupied on the thinpool, used for monitoring.
metadata_percent double Metadata percent occupied on the thinpool, used for monitoring.
overprovision_bytes uint64 Free space on the thinpool with overprovision, used for annotating node.
size_bytes uint64 Physical data space size of the thinpool.

WatchItem

Represents the response corresponding to device class targets.

Field Type Label Description
free_bytes uint64 Free space in the volume group in bytes.
device_class string
size_bytes uint64 Size of volume group in bytes.
thin_pool ThinPoolItem

WatchResponse

Represents the stream output from Watch.

Field Type Label Description
free_bytes uint64 Free space of the default volume group in bytes. In the case of thin pools, free space on the thinpool with overprovision in bytes.
items WatchItem repeated

LVService

Service to manage logical volumes of the volume group.

Method Name Request Type Response Type Description
CreateLV CreateLVRequest CreateLVResponse Create a logical volume.
RemoveLV RemoveLVRequest Empty Remove a logical volume.
ResizeLV ResizeLVRequest Empty Resize a logical volume.
CreateLVSnapshot CreateLVSnapshotRequest CreateLVSnapshotResponse

VGService

Service to retrieve information of the volume group.

Method Name Request Type Response Type Description
GetLVList GetLVListRequest GetLVListResponse Get the list of logical volumes in the volume group.
GetFreeBytes GetFreeBytesRequest GetFreeBytesResponse Get the free space of the volume group in bytes.
Watch Empty WatchResponse stream Stream the volume group metrics.

Scalar Value Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)