Spdk/python/spdk/sma/proto/sma.proto
Konrad Sztyber e5e43f9615 sma: add golang package definitions
It makes it possible to generate golang code from the SMA's protobuf
definitions.

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I6f03bc2b602f93ea608597e863cb9e016b68f12e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10279
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2022-05-18 07:24:06 +00:00

101 lines
2.7 KiB
Protocol Buffer

syntax = "proto3";
import "nvme.proto";
import "virtio_blk.proto";
import "nvmf_tcp.proto";
import "nvmf.proto";
// This file provides the generic definitions for the Storage Management Agent
// gRPC calls. All of the methods are supposed to be idempotent. Errors are
// reported as standard gRPC status codes.
package sma;
option go_package = "spdk.io/sma";
// Parameters describing a volume
message VolumeParameters {
// Volume GUID/UUID
bytes volume_id = 1;
oneof connection_params {
// NVMeoF volume
nvmf.VolumeConnectionParameters nvmf = 2;
}
}
// Create device request
message CreateDeviceRequest {
// Volume to immediately attach to the created device. This field may be
// optional for some device types (e.g. NVMe), while it may be required for
// others (e.g. virtio-blk).
VolumeParameters volume = 1;
// Device-specific parameters
oneof params {
// NVMe parameters
nvme.DeviceParameters nvme = 2;
// Virtio-blk parameters
virtio_blk.DeviceParameters virtio_blk = 3;
// NVMe/TCP parameters
nvmf_tcp.DeviceParameters nvmf_tcp = 4;
}
}
// Create device response
message CreateDeviceResponse {
// Device handle that can uniquely identify a device within an instance of
// Storage Management Agent
string handle = 1;
}
// Delete device request
message DeleteDeviceRequest {
// Device handle
string handle = 1;
}
// Delete device response
message DeleteDeviceResponse {}
// Attach volume request
message AttachVolumeRequest {
// Volume parameters
VolumeParameters volume = 1;
// Device handle
string device_handle = 2;
}
// Attach volume response
message AttachVolumeResponse {}
// Detach volume request
message DetachVolumeRequest {
// Volume GUID/UUID
bytes volume_id = 1;
// Device handle
string device_handle = 2;
}
// Detach volume response
message DetachVolumeResponse {}
// Storage Management Agent gRPC service definition
service StorageManagementAgent {
// Creates a new device. A device is an entity that can be used to expose
// volumes (e.g. an NVMeoF subsystem).
rpc CreateDevice (CreateDeviceRequest)
returns (CreateDeviceResponse) {}
// Deletes a device
rpc DeleteDevice (DeleteDeviceRequest)
returns (DeleteDeviceResponse) {}
// Attaches a volume to a specified device making it available through that
// device (e.g. for NVMeoF this results in adding a namespace to an NVMeoF
// subsystem). The type of volume doesn't need to match the type of device
// (e.g. it's perfectly fine to attach an NVMe/TCP volume to a virtio-blk
// device).
rpc AttachVolume (AttachVolumeRequest)
returns (AttachVolumeResponse) {}
// Detaches a volume from a device
rpc DetachVolume (DetachVolumeRequest)
returns (DetachVolumeRequest) {}
}