-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
new microservice to rebalance a single data object #20
Comments
Hi @trel |
We have not added this microservice yet. The workaround is to have the |
candidate #define RODS_SERVER 1
#include "reGlobalsExtern.hpp"
#include "reFuncDefs.hpp"
#include "icatHighLevelRoutines.hpp"
#include "rcMisc.h"
#include "generalAdmin.h"
#include "irods_server_properties.hpp"
#include "irods_ms_plugin.hpp"
// =-=-=-=-=-=-=-
// STL Includes
#include <iostream>
extern "C" {
/**
* \fn msiRunRebalance(msParam_t *resource, ruleExecInfo_t *rei)
*
* \brief runs modresc rebalance for given resource
*
* \module dfc
*
* \since 4.1.x
*
*
*
* \usage See clients/icommands/test/rules/
*
* \param[in] resource - a STR_MS_T with the name of the resource where
* the reblalnce will apply.
* \param[in,out] rei - The RuleExecInfo structure that is automatically
* handled by the rule engine. The user does not include rei as a
* parameter in the rule invocation.
*
* \iCatAttrDependence None
* \iCatAttrModified Updates synchronizes child resource if provided resource is type: replication
* \sideeffect None
*
* \return integer
* \retval 0 on success
* \pre None
* \post None
* \sa None
*
**/
// =-=-=-=-=-=-=-
int
msiRunRebalance( msParam_t* resource, ruleExecInfo_t* rei ) {
generalAdminInp_t generalAdminInp;
int status;
/* For testing mode when used with irule --test */
RE_TEST_MACRO( " Calling msiRunRebalance" )
/* Sanity checks */
if ( rei == NULL || rei->rsComm == NULL ) {
rodsLog( LOG_ERROR, "msiRunRebalance: input rei or rsComm is NULL." );
return SYS_INTERNAL_NULL_INPUT_ERR;
}
/* Must be called from an admin account */
if ( rei->uoic->authInfo.authFlag < LOCAL_PRIV_USER_AUTH ) {
status = CAT_INSUFFICIENT_PRIVILEGE_LEVEL;
rodsLog( LOG_ERROR, "msiRunRebalance: User %s is not local admin. Status = %d",
rei->uoic->userName, status );
return status;
}
/* Prepare generalAdminInp. It needs to be set up as follows:
* generalAdminInp.arg0: "modresc"
* generalAdminInp.arg1: resource name
* generalAdminInp.arg2: "rebalance"
* generalAdminInp.arg3: ""
* generalAdminInp.arg4: ""
* generalAdminInp.arg5: ""
* generalAdminInp.arg6: ""
* generalAdminInp.arg7: ""
* generalAdminInp.arg8: ""
* generalAdminInp.arg9: ""
*/
memset( &generalAdminInp, 0, sizeof( generalAdminInp_t ) );
generalAdminInp.arg0 = "modify";
generalAdminInp.arg1 = "resource";
/* Parse resource name */
if ( ( generalAdminInp.arg2 = parseMspForStr( resource ) ) == NULL ) {
rodsLog( LOG_ERROR, "msiRunRebalance: Null resource provided." );
return SYS_INTERNAL_NULL_INPUT_ERR;
}
//memset( &generalAdminInp, 0, sizeof( generalAdminInp_t ) );
generalAdminInp.arg3 = "rebalance";
/* Fill up the rest of generalAdminInp */
generalAdminInp.arg4 = "";
generalAdminInp.arg5 = "";
generalAdminInp.arg6 = "";
generalAdminInp.arg7 = "";
generalAdminInp.arg8 = "";
generalAdminInp.arg9 = "";
/* Call rsGeneralAdmin */
status = rsGeneralAdmin( rei->rsComm, &generalAdminInp );
/* Done */
return status;
}
irods::ms_table_entry* plugin_factory() {
irods::ms_table_entry* msvc = new irods::ms_table_entry( 1 );
msvc->add_operation( "msiRunRebalance", "msiRunRebalance" );
return msvc;
}
}; |
From @rwmoore:
The text was updated successfully, but these errors were encountered: