Skip to content

Commit

Permalink
add methods to provision and deprovision users and storages for users
Browse files Browse the repository at this point in the history
  • Loading branch information
David Christofas committed Nov 26, 2020
1 parent a6cf2aa commit 4475d7d
Show file tree
Hide file tree
Showing 3 changed files with 512 additions and 0 deletions.
92 changes: 92 additions & 0 deletions cs3/admin/v1beta1/admin_api.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// Copyright 2020 CERN
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// In applying this license, CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

syntax = "proto3";

package cs3.admin.v1beta1;

option csharp_namespace = "Cs3.Admin.V1Beta1";
option go_package = "adminv1beta1";
option java_multiple_files = true;
option java_outer_classname = "AdminApiProto";
option java_package = "com.cs3.admin.v1beta1";
option objc_class_prefix = "CAX";
option php_namespace = "Cs3\\Admin\\V1Beta1";

import "cs3/identity/user/v1beta1/resources.proto";
import "cs3/rpc/v1beta1/status.proto";
import "cs3/types/v1beta1/types.proto";

// Admin API
//
// The Admin API is meant to be used to execute administrative tasks
// for users.
//
// The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
// NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
// "OPTIONAL" in this document are to be interpreted as described in
// RFC 2119.
//
// The following are global requirements that apply to all methods:
// Any method MUST return CODE_OK on a succesful operation.
// Any method MAY return NOT_IMPLEMENTED.
// Any method MAY return INTERNAL.
// Any method MAY return UNKNOWN.
// Any method MAY return UNAUTHENTICATED.
service AdminAPI {
// Provisions a user.
rpc ProvisionUser(ProvisionUserRequest) returns (ProvisionUserResponse);
// Deprovisions a user.
rpc DeprovisionUser(DeprovisionUserRequest) returns (DeprovisionUserResponse);
}

message ProvisionUserRequest {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The user for which the action should be performed.
cs3.identity.user.v1beta1.User user = 2;
}

message ProvisionUserResponse {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The response status.
cs3.rpc.v1beta1.Status status = 2;
}

message DeprovisionUserRequest {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The user for which the action should be performed.
cs3.identity.user.v1beta1.User user = 2;
}

message DeprovisionUserResponse {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The response status.
cs3.rpc.v1beta1.Status status = 2;
}
47 changes: 47 additions & 0 deletions cs3/storage/provider/v1beta1/provider_api.proto
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ option java_package = "com.cs3.storage.provider.v1beta1";
option objc_class_prefix = "CSP";
option php_namespace = "Cs3\\Storage\\Provider\\V1Beta1";

import "cs3/identity/user/v1beta1/resources.proto";
import "cs3/rpc/v1beta1/status.proto";
import "cs3/storage/provider/v1beta1/resources.proto";
import "cs3/types/v1beta1/types.proto";
Expand Down Expand Up @@ -144,6 +145,10 @@ service ProviderAPI {
rpc CreateHome(CreateHomeRequest) returns (CreateHomeResponse);
// Gets the home path for the user.
rpc GetHome(GetHomeRequest) returns (GetHomeResponse);
// Provisions the storage for a user.
rpc ProvisionStorage(ProvisionStorageRequest) returns (ProvisionStorageResponse);
// Deprovisions the storage for a user.
rpc DeprovisionStorage(DeprovisionStorageRequest) returns (DeprovisionStorageResponse);
}

message GetHomeRequest {
Expand Down Expand Up @@ -724,3 +729,45 @@ message CreateHomeResponse {
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 2;
}

message ProvisionStorageRequest {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The owner of the storage.
cs3.identity.user.v1beta1.User owner = 2;
// REQUIRED.
// The bytes quota for the user.
uint64 quota_max_bytes = 3;
// REQUIRED.
// The files quota for the user.
uint64 quota_max_files = 4;
}

message ProvisionStorageResponse {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The response status.
cs3.rpc.v1beta1.Status status = 2;
}

message DeprovisionStorageRequest {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The owner of the storage.
cs3.identity.user.v1beta1.UserId owner = 2;
}

message DeprovisionStorageResponse {
// OPTIONAL.
// Opaque information.
cs3.types.v1beta1.Opaque opaque = 1;
// REQUIRED.
// The response status.
cs3.rpc.v1beta1.Status status = 2;
}
Loading

0 comments on commit 4475d7d

Please sign in to comment.