diff --git a/healer/healer.proto b/healer/healer.proto new file mode 100644 index 0000000..4bdd4ba --- /dev/null +++ b/healer/healer.proto @@ -0,0 +1,67 @@ +// Code generated by make; DO NOT EDIT. +syntax = "proto3"; +package healer; + +import "github.com/container-storage-interface/spec/lib/go/csi/csi.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "github.com/csi-addons/spec/lib/go/healer"; + +// HealerNode holds the RPC method for running heal operations on the +// active (staged/published) volume. +service HealerNode { + // NodeHealer is a procedure that gets called on the CSI NodePlugin. + rpc NodeHealer (NodeHealerRequest) + returns (NodeHealerResponse) {} +} +// NodeHealerRequest contains the information needed to identify the +// location where the volume is mounted so that local filesystem or +// block-device operations to heal volume can be executed. +message NodeHealerRequest { + // The ID of the volume. This field is REQUIRED. + string volume_id = 1; + + // The path on which volume is available. This field is REQUIRED. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + string volume_path = 2; + + // The path where the volume is staged, if the plugin has the + // STAGE_UNSTAGE_VOLUME capability, otherwise empty. + // If not empty, it MUST be an absolute path in the root + // filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + string staging_target_path = 3; + + // Volume capability describing how the CO intends to use this volume. + // This allows SP to determine if volume is being used as a block + // device or mounted file system. For example - if volume is being + // used as a block device the SP MAY choose to skip calling filesystem + // operations to healer. If volume_capability is omitted the SP MAY + // determine access_type from given volume_path for the volume and + // perform healing. This is an OPTIONAL field. + csi.v1.VolumeCapability volume_capability = 4; + + // Secrets required by plugin to complete the healer operation. + // This field is OPTIONAL. + map secrets = 5 [(csi.v1.csi_secret) = true]; +} + +// NodeHealerResponse holds the information about the result of the +// NodeHealerRequest call. +message NodeHealerResponse { + // Normal volumes are available for use and operating optimally. + // An abnormal volume does not meet these criteria. + // This field is REQUIRED. + bool abnormal = 1; + + // The message describing the condition of the volume. + // This field is REQUIRED. + string message = 2; +}