Skip to content
Snippets Groups Projects
Commit 17df3c72 authored by Tigran Mkrtchyan's avatar Tigran Mkrtchyan :coffee:
Browse files

frontend-grpc: initial arcival request

parent 1e5393c7
Branches
Tags
No related merge requests found
......@@ -109,6 +109,36 @@ Status CtaRpcImpl::GetTapes(::grpc::ServerContext *context, const ::google::prot
return Status::OK;
}
Status CtaRpcImpl::Archive(::grpc::ServerContext* context, const ::cta::eos::Notification* request, ::cta::xrd::Response* response) {
m_log->log(cta::log::INFO, "Archive request");
auto storageClassItor = request->file().xattr().find("sys.archive.storage_class");
if(request->file().xattr().end() == storageClassItor) {
return ::grpc::Status(::grpc::StatusCode::INVALID_ARGUMENT, "storage class is not provided");
}
const std::string storageClass = storageClassItor->second;
m_log->log(cta::log::INFO, "Archive request for " + storageClass);
cta::common::dataStructures::RequesterIdentity requester;
requester.name = request->cli().user().username();
requester.group = request->cli().user().groupname();
auto instance = request->wf().instance().name();
try {
uint64_t archiveFileId = m_scheduler->checkAndGetNextArchiveFileId(instance, storageClass, requester, *m_log);
std::cout << "New Fileid: " << archiveFileId << std::endl;
} catch (cta::exception::Exception &ex) {
m_log->log(cta::log::CRIT, ex.getMessageValue());
return ::grpc::Status(::grpc::StatusCode::INTERNAL, ex.getMessageValue());
}
return Status::OK;
}
void CtaRpcImpl::run(const std::string server_address) {
ServerBuilder builder;
......
......@@ -45,6 +45,8 @@ public:
Status Version(::grpc::ServerContext *context, const ::google::protobuf::Empty *request, ::cta::admin::Version *response);
Status GetTapes(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::grpc::ServerWriter<::cta::admin::TapeLsItem>* writer);
Status GetStorageClasses(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::grpc::ServerWriter<::cta::admin::StorageClassLsItem>* writer);
Status Archive(::grpc::ServerContext* context, const ::cta::eos::Notification* request, ::cta::xrd::Response* response);
};
#endif //CTA_FRONTENDGRPCSVC_H
......@@ -9,6 +9,7 @@ package cta.rpc;
import "google/protobuf/empty.proto";
import "cta_admin.proto";
import "cta_eos.proto";
//
// gRPC interface to CTA frontend
......@@ -17,4 +18,5 @@ service CtaRpc {
rpc Version (google.protobuf.Empty) returns (cta.admin.Version) {}
rpc GetTapes (google.protobuf.Empty) returns (stream cta.admin.TapeLsItem) {}
rpc GetStorageClasses (google.protobuf.Empty) returns (stream cta.admin.StorageClassLsItem) {}
rpc Archive (cta.eos.Notification) returns (cta.xrd.Response) {}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment