diff --git a/cs3/gateway/v1beta1/gateway_api.proto b/cs3/gateway/v1beta1/gateway_api.proto
index a1831efe..54ff0434 100644
--- a/cs3/gateway/v1beta1/gateway_api.proto
+++ b/cs3/gateway/v1beta1/gateway_api.proto
@@ -165,6 +165,12 @@ service GatewayAPI {
// Unsets arbitrary metdata into a storage resource.
// Arbitrary metadata is returned in a cs3.storage.provider.v1beta1.ResourceInfo.
rpc UnsetArbitraryMetadata(cs3.storage.provider.v1beta1.UnsetArbitraryMetadataRequest) returns (cs3.storage.provider.v1beta1.UnsetArbitraryMetadataResponse);
+ // Locks a storage resource.
+ rpc SetLock(cs3.storage.provider.v1beta1.SetLockRequest) returns (cs3.storage.provider.v1beta1.SetLockResponse);
+ // Gets the lock metadata of a storage resource.
+ rpc GetLock(cs3.storage.provider.v1beta1.GetLockRequest) returns (cs3.storage.provider.v1beta1.GetLockResponse);
+ // Unlocks a storage resource.
+ rpc Unlock(cs3.storage.provider.v1beta1.UnlockRequest) returns (cs3.storage.provider.v1beta1.UnlockResponse);
// Creates the home directory for a user.
rpc CreateHome(cs3.storage.provider.v1beta1.CreateHomeRequest) returns (cs3.storage.provider.v1beta1.CreateHomeResponse);
// Creates a storage space.
diff --git a/cs3/storage/provider/v1beta1/provider_api.proto b/cs3/storage/provider/v1beta1/provider_api.proto
index 63b94d3f..a0d35729 100644
--- a/cs3/storage/provider/v1beta1/provider_api.proto
+++ b/cs3/storage/provider/v1beta1/provider_api.proto
@@ -144,6 +144,12 @@ service ProviderAPI {
// Unsets arbitrary metdata into a storage resource.
// Arbitrary metadata is returned in a cs3.storageprovider.v1beta1.ResourceInfo.
rpc UnsetArbitraryMetadata(UnsetArbitraryMetadataRequest) returns (UnsetArbitraryMetadataResponse);
+ // Locks a storage resource.
+ rpc SetLock(SetLockRequest) returns (SetLockResponse);
+ // Gets the lock metadata of a storage resource.
+ rpc GetLock(GetLockRequest) returns (GetLockResponse);
+ // Unlocks a storage resource.
+ rpc Unlock(UnlockRequest) returns (UnlockResponse);
// Creates the home directory for a user.
rpc CreateHome(CreateHomeRequest) returns (CreateHomeResponse);
// Gets the home path for the user.
@@ -762,6 +768,71 @@ message UnsetArbitraryMetadataResponse {
cs3.types.v1beta1.Opaque opaque = 2;
}
+message SetLockRequest {
+ // OPTIONAL.
+ // Opaque information.
+ cs3.types.v1beta1.Opaque opaque = 1;
+ // REQUIRED.
+ // The reference on which the lock should be set,
+ // if no lock is present.
+ // The storage driver MUST ensure atomic handling
+ // of lock/unlock operations.
+ Reference ref = 2;
+ // REQUIRED.
+ // The lock metadata.
+ Lock lock = 3;
+}
+
+message SetLockResponse {
+ // REQUIRED.
+ // The response status.
+ cs3.rpc.v1beta1.Status status = 1;
+ // OPTIONAL.
+ // Opaque information.
+ cs3.types.v1beta1.Opaque opaque = 2;
+}
+
+message GetLockRequest {
+ // OPTIONAL.
+ // Opaque information.
+ cs3.types.v1beta1.Opaque opaque = 1;
+ // REQUIRED.
+ // The reference the lock is associated to.
+ Reference ref = 2;
+}
+
+message GetLockResponse {
+ // REQUIRED.
+ // The response status.
+ cs3.rpc.v1beta1.Status status = 1;
+ // OPTIONAL.
+ // Opaque information.
+ cs3.types.v1beta1.Opaque opaque = 2;
+ // REQUIRED.
+ // The lock metadata
+ Lock lock = 3;
+}
+
+message UnlockRequest {
+ // OPTIONAL.
+ // Opaque information.
+ cs3.types.v1beta1.Opaque opaque = 1;
+ // REQUIRED.
+ // The reference the lock is associated to.
+ // The storage driver MUST ensure atomic handling
+ // of lock/unlock operations.
+ Reference ref = 2;
+}
+
+message UnlockResponse {
+ // REQUIRED.
+ // The response status.
+ cs3.rpc.v1beta1.Status status = 1;
+ // OPTIONAL.
+ // Opaque information.
+ cs3.types.v1beta1.Opaque opaque = 2;
+}
+
message CreateHomeRequest {
// OPTIONAL.
// Opaque information.
diff --git a/cs3/storage/provider/v1beta1/resources.proto b/cs3/storage/provider/v1beta1/resources.proto
index b67bde74..de8e90f7 100644
--- a/cs3/storage/provider/v1beta1/resources.proto
+++ b/cs3/storage/provider/v1beta1/resources.proto
@@ -115,6 +115,29 @@ message ArbitraryMetadata {
mapTable of Contents
MGetHomeResponse
+ Table of Contents
MSetArbitraryMetadataResponse
+ Table of Contents
MStatResponse
+ Table of Contents
MGrantee
+ Table of Contents
EGranteeType
+ GatewayAPI
Arbitrary metadata is returned in a cs3.storage.provider.v1beta1.ResourceInfo.
Locks a storage resource.
Gets the lock metadata of a storage resource.
Unlocks a storage resource.
OPTIONAL. Whether the mime type is eligible for file creation in the web UI. Defaults to false, i.e. files with this mime type can be opened -but not directly allow_creationd from the web UI.
Field | Type | Label | Description |
opaque | +cs3.types.v1beta1.Opaque | ++ | OPTIONAL. +Opaque information. |
+
ref | +Reference | ++ | REQUIRED. +The reference the lock is associated to. |
+
Field | Type | Label | Description |
status | +cs3.rpc.v1beta1.Status | ++ | REQUIRED. +The response status. |
+
opaque | +cs3.types.v1beta1.Opaque | ++ | OPTIONAL. +Opaque information. |
+
lock | +Lock | ++ | REQUIRED. +The lock metadata |
+
Field | Type | Label | Description |
opaque | +cs3.types.v1beta1.Opaque | ++ | OPTIONAL. +Opaque information. |
+
ref | +Reference | ++ | REQUIRED. +The reference on which the lock should be set, +if no lock is present. +The storage driver MUST ensure atomic handling +of lock/unlock operations. |
+
lock | +Lock | ++ | REQUIRED. +The lock metadata. |
+
Field | Type | Label | Description |
status | +cs3.rpc.v1beta1.Status | ++ | REQUIRED. +The response status. |
+
opaque | +cs3.types.v1beta1.Opaque | ++ | OPTIONAL. +Opaque information. |
+
Field | Type | Label | Description |
opaque | +cs3.types.v1beta1.Opaque | ++ | OPTIONAL. +Opaque information. |
+
ref | +Reference | ++ | REQUIRED. +The reference the lock is associated to. +The storage driver MUST ensure atomic handling +of lock/unlock operations. |
+
Field | Type | Label | Description |
status | +cs3.rpc.v1beta1.Status | ++ | REQUIRED. +The response status. |
+
opaque | +cs3.types.v1beta1.Opaque | ++ | OPTIONAL. +Opaque information. |
+
Locks a storage resource.
Gets the lock metadata of a storage resource.
Unlocks a storage resource.
The metadata associated with a lock on a resource.
+ + +Field | Type | Label | Description |
type | +LockType | ++ | The type of lock. |
+
metadata | +string | ++ | Some arbitrary metadata associated with the lock. |
+
Represents a quota for a storage space.
@@ -16506,6 +16830,45 @@The available type of locks for a resource.
+Name | Number | Description |
LOCK_TYPE_INVALID | +0 | ++ |
LOCK_TYPE_SHARED | +1 | +Shared (advisory) lock: the resource can be read or +written or unlocked by everyone who has access. +Currently used by WOPI. |
+
LOCK_TYPE_WRITE | +2 | +Write lock: the resource can be read by everyone who has +access, but write and unlock is restricted to the lock holder. |
+
LOCK_TYPE_EXCL | +3 | +Exclusive lock: the resource cannot be read nor written +nor unlocked except by the user holding the lock. |
+
The type of checksum to use.