Skip to content
This repository has been archived by the owner on Nov 24, 2023. It is now read-only.

Commit

Permalink
Add msi_add_avu and msi_rmw_avu microservices.
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulVanSchayck committed Apr 9, 2019
1 parent 2cba656 commit d78d4d7
Show file tree
Hide file tree
Showing 6 changed files with 180 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ add_library(msi_unmount SHARED msi_unmount/unmount.cpp)
add_library(msiput_dataobj_or_coll SHARED msiput_dataobj_or_coll/libmsiput_dataobj_or_coll.cpp)
add_library(msi_amqp_basic_publish SHARED msi_amqp_basic_publish/msi_amqp_basic_publish.cpp)
add_library(msi_set_avu SHARED msi_set_avu/msi_set_avu.cpp)
add_library(msi_add_avu SHARED msi_add_avu/msi_add_avu.cpp)
add_library(msi_rmw_avu SHARED msi_rmw_avu/msi_rmw_avu.cpp)

# Link the generated library to dependency libraries
target_link_libraries(msi_getenv LINK_PUBLIC ${Boost_LIBRARIES})
Expand All @@ -101,6 +103,8 @@ target_link_libraries(msi_unmount LINK_PUBLIC ${Boost_LIBRARIES})
target_link_libraries(msiput_dataobj_or_coll LINK_PUBLIC ${Boost_LIBRARIES})
target_link_libraries(msi_amqp_basic_publish LINK_PUBLIC ${Boost_LIBRARIES} ${RABBITMQ_LIBRARIES})
target_link_libraries(msi_set_avu LINK_PUBLIC ${Boost_LIBRARIES})
target_link_libraries(msi_add_avu LINK_PUBLIC ${Boost_LIBRARIES})
target_link_libraries(msi_rmw_avu LINK_PUBLIC ${Boost_LIBRARIES})


# Set the location for library installation
Expand All @@ -115,6 +119,8 @@ install(TARGETS
msiput_dataobj_or_coll
msi_amqp_basic_publish
msi_set_avu
msi_add_avu
msi_rmw_avu
DESTINATION
/usr/lib/irods/plugins/microservices)

Expand Down
74 changes: 74 additions & 0 deletions msi_add_avu/msi_add_avu.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#include "irods_error.hpp"
#include "irods_ms_plugin.hpp"
#include "rsModAVUMetadata.hpp"

int msiAddAVU(
msParam_t* _item_type,
msParam_t* _item_name,
msParam_t* _attr_name,
msParam_t* _attr_val,
msParam_t* _attr_unit,
ruleExecInfo_t* _rei ) {

char *it_str = parseMspForStr( _item_type );
if( !it_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *in_str = parseMspForStr( _item_name );
if( !in_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *an_str = parseMspForStr( _attr_name );
if( !an_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *av_str = parseMspForStr( _attr_val );
if( !av_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *au_str = parseMspForStr( _attr_unit );
if( !au_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char op[] = "add";

modAVUMetadataInp_t avuOp;
memset(&avuOp, 0, sizeof(avuOp));
avuOp.arg0 = op;
avuOp.arg1 = it_str;
avuOp.arg2 = in_str;
avuOp.arg3 = an_str;
avuOp.arg4 = av_str;
avuOp.arg5 = au_str;

_rei->status = rsModAVUMetadata(_rei->rsComm, &avuOp);

return _rei->status;

}

extern "C"
irods::ms_table_entry* plugin_factory() {
irods::ms_table_entry* msvc = new irods::ms_table_entry(5);

msvc->add_operation<
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
ruleExecInfo_t*>("msiAddAVU",
std::function<int(
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
ruleExecInfo_t*)>(msiAddAVU));
return msvc;
}
13 changes: 13 additions & 0 deletions msi_add_avu/msi_add_avu_test.r
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Call with
#
# irule -F msi_add_avu_test.r
#

test() {
# type, path, attribute, value, unit
msi_add_avu("-d", "/nlmumc/home/rods/docker-compose.yml", "foo", "bar", "xyz");
}


INPUT null
OUTPUT ruleExecOut
74 changes: 74 additions & 0 deletions msi_rmw_avu/msi_rmw_avu.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#include "irods_error.hpp"
#include "irods_ms_plugin.hpp"
#include "rsModAVUMetadata.hpp"

int msiAddAVU(
msParam_t* _item_type,
msParam_t* _item_name,
msParam_t* _attr_name,
msParam_t* _attr_val,
msParam_t* _attr_unit,
ruleExecInfo_t* _rei ) {

char *it_str = parseMspForStr( _item_type );
if( !it_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *in_str = parseMspForStr( _item_name );
if( !in_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *an_str = parseMspForStr( _attr_name );
if( !an_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *av_str = parseMspForStr( _attr_val );
if( !av_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char *au_str = parseMspForStr( _attr_unit );
if( !au_str ) {
return SYS_INVALID_INPUT_PARAM;
}

char op[] = "rmw";

modAVUMetadataInp_t avuOp;
memset(&avuOp, 0, sizeof(avuOp));
avuOp.arg0 = op;
avuOp.arg1 = it_str;
avuOp.arg2 = in_str;
avuOp.arg3 = an_str;
avuOp.arg4 = av_str;
avuOp.arg5 = au_str;

_rei->status = rsModAVUMetadata(_rei->rsComm, &avuOp);

return _rei->status;

}

extern "C"
irods::ms_table_entry* plugin_factory() {
irods::ms_table_entry* msvc = new irods::ms_table_entry(5);

msvc->add_operation<
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
ruleExecInfo_t*>("msiAddAVU",
std::function<int(
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
msParam_t*,
ruleExecInfo_t*)>(msiAddAVU));
return msvc;
}
13 changes: 13 additions & 0 deletions msi_rmw_avu/msi_rmw_avu_test.r
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Call with
#
# irule -F msi_add_avu_test.r
#

test() {
# type, path, attribute, value, unit
msi_rmw_avu("-d", "/nlmumc/home/rods/docker-compose.yml", "%", "%", "xyz");
}


INPUT null
OUTPUT ruleExecOut
2 changes: 0 additions & 2 deletions msi_set_avu/msi_set_avu.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#define RODS_SERVER 1

#include "irods_error.hpp"
#include "irods_ms_plugin.hpp"
#include "rsModAVUMetadata.hpp"
Expand Down

0 comments on commit d78d4d7

Please sign in to comment.