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

frontend-grpc: add getStorageClasses and getTapes methotds

parent d874a412
Branches
Tags
No related merge requests found
......@@ -25,6 +25,90 @@ Status CtaRpcImpl::Version(::grpc::ServerContext *context, const ::google::proto
return Status::OK;
}
Status CtaRpcImpl::GetStorageClasses(::grpc::ServerContext* context, const ::google::protobuf::Empty* request,
::grpc::ServerWriter<::cta::admin::StorageClassLsItem>* writer) {
::cta::admin::StorageClassLsItem storaceClass_item;
for (const auto &sc: m_catalogue->getStorageClasses()) {
storaceClass_item.Clear();
storaceClass_item.set_name(sc.name);
storaceClass_item.set_nb_copies(sc.nbCopies);
storaceClass_item.set_vo(sc.vo.name);
storaceClass_item.mutable_creation_log()->set_username(sc.creationLog.username);
storaceClass_item.mutable_creation_log()->set_host(sc.creationLog.host);
storaceClass_item.mutable_creation_log()->set_time(sc.creationLog.time);
storaceClass_item.mutable_last_modification_log()->set_username(sc.lastModificationLog.username);
storaceClass_item.mutable_last_modification_log()->set_host(sc.lastModificationLog.host);
storaceClass_item.mutable_last_modification_log()->set_time(sc.lastModificationLog.time);
storaceClass_item.set_comment(sc.comment);
writer->Write(storaceClass_item, grpc::WriteOptions());
}
return Status::OK;
}
Status CtaRpcImpl::GetTapes(::grpc::ServerContext *context, const ::google::protobuf::Empty *request,
::grpc::ServerWriter<::cta::admin::TapeLsItem> *writer) {
::cta::admin::TapeLsItem tape_item;
for (const auto &tape: m_catalogue->getTapes()) {
tape_item.Clear();
tape_item.set_vid(tape.vid);
tape_item.set_media_type(tape.mediaType);
tape_item.set_vendor(tape.vendor);
tape_item.set_logical_library(tape.logicalLibraryName);
tape_item.set_tapepool(tape.tapePoolName);
tape_item.set_vo(tape.vo);
tape_item.set_encryption_key_name((bool) tape.encryptionKeyName ? tape.encryptionKeyName.value() : "-");
tape_item.set_capacity(tape.capacityInBytes);
tape_item.set_occupancy(tape.dataOnTapeInBytes);
tape_item.set_last_fseq(tape.lastFSeq);
tape_item.set_full(tape.full);
tape_item.set_from_castor(tape.isFromCastor);
tape_item.set_read_mount_count(tape.readMountCount);
tape_item.set_write_mount_count(tape.writeMountCount);
tape_item.set_nb_master_files(tape.nbMasterFiles);
tape_item.set_master_data_in_bytes(tape.masterDataInBytes);
if (tape.labelLog) {
::cta::common::TapeLog *labelLog = tape_item.mutable_label_log();
labelLog->set_drive(tape.labelLog.value().drive);
labelLog->set_time(tape.labelLog.value().time);
}
if (tape.lastWriteLog) {
::cta::common::TapeLog *lastWriteLog = tape_item.mutable_last_written_log();
lastWriteLog->set_drive(tape.lastWriteLog.value().drive);
lastWriteLog->set_time(tape.lastWriteLog.value().time);
}
if (tape.lastReadLog) {
::cta::common::TapeLog *lastReadLog = tape_item.mutable_last_read_log();
lastReadLog->set_drive(tape.lastReadLog.value().drive);
lastReadLog->set_time(tape.lastReadLog.value().time);
}
::cta::common::EntryLog *creationLog = tape_item.mutable_creation_log();
creationLog->set_username(tape.creationLog.username);
creationLog->set_host(tape.creationLog.host);
creationLog->set_time(tape.creationLog.time);
::cta::common::EntryLog *lastModificationLog = tape_item.mutable_last_modification_log();
lastModificationLog->set_username(tape.lastModificationLog.username);
lastModificationLog->set_host(tape.lastModificationLog.host);
lastModificationLog->set_time(tape.lastModificationLog.time);
tape_item.set_comment(tape.comment);
tape_item.set_state(tape.getStateStr());
tape_item.set_state_reason(tape.stateReason ? tape.stateReason.value() : "");
tape_item.set_state_update_time(tape.stateUpdateTime);
tape_item.set_state_modified_by(tape.stateModifiedBy);
writer->Write(tape_item, grpc::WriteOptions());
}
return Status::OK;
}
void CtaRpcImpl::run(const std::string server_address) {
ServerBuilder builder;
......@@ -75,5 +159,4 @@ int main(const int argc, char *const *const argv) {
CtaRpcImpl svc(&lc, catalogue);
svc.run(server_address);
}
\ No newline at end of file
......@@ -43,6 +43,8 @@ public:
CtaRpcImpl(cta::log::LogContext *lc, std::unique_ptr<cta::catalogue::Catalogue> &catalogue);
void run(const std::string server_address);
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);
};
#endif //CTA_FRONTENDGRPCSVC_H
......@@ -15,4 +15,6 @@ import "cta_admin.proto";
//
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) {}
}
\ 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