Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

lcmaps_pluginmanager.c File Reference

the plugin manager for LCMAPS More...

#include "lcmaps_config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lcmaps_types.h"
#include "lcmaps_log.h"
#include "lcmaps_arguments.h"
#include "lcmaps_defines.h"
#include "_lcmaps_utils.h"
#include "_lcmaps_db_read.h"
#include "_lcmaps_runvars.h"
#include "_lcmaps_cred_data.h"
#include "../evaluationmanager/evaluationmanager.h"

Go to the source code of this file.

Data Structures

struct  lcmaps_plugindl_s
 the lcmaps plugin module structure More...


Defines

#define NUL   '\0'
#define MAXPROCS   4

Typedefs

typedef int(* lcmaps_proc_t )()
 this type corresponds to the types of the plugin interface functions

typedef lcmaps_plugindl_s lcmaps_plugindl_t
 the type definition of the lcmaps plugin module structure


Enumerations

enum  lcmaps_proctype_e { INITPROC, RUNPROC, TERMPROC, INTROPROC }
 This enumeration type gives the different plugin symbol/function types. More...


Functions

lcmaps_plugindl_tPluginInit (lcmaps_db_entry_t *, lcmaps_plugindl_t **)
 Initialize the plugin.

lcmaps_proc_t get_procsymbol (void *, char *)
 get procedure symbol from dlopen-ed library

int print_lcmaps_plugin (int, lcmaps_plugindl_t *)
 print the lcmaps_plugindl_t structure

int parse_args_plugin (const char *, const char *, char **, int *)
 convert plugin argument string into xargc, xargv

int clean_plugin_list (lcmaps_plugindl_t **)
 clean (free) the list of plugins and call the plugin termination functions

int startPluginManager ()
 start the PluginManager

int runPluginManager (lcmaps_request_t request, lcmaps_cred_id_t lcmaps_cred, int npols, char **policynames)
 Run the PluginManager.

int resetCredentialData ()
 Reset the Credential data.

int runPlugin (const char *pluginname)
 Run a plugin.

int stopPluginManager ()
 Terminate the PluginManager module.


Detailed Description

the plugin manager for LCMAPS

Author:
Martijn Steenbakkers for the EU DataGrid.
The interface to the PluginManager module is composed of:
  1. startPluginManager(): start the PluginManager --> load plugins, start evaluation manager
  2. runPluginManager(): run the PluginManager --> run evaluation manager --> run plugins
  3. stopPluginManager(): stop the PluginManager
  4. reloadPluginManager(): reload the PluginManager ? (will we implement this ?)
  5. runPlugin(): run the specified plugin. (used by Evaluation Manager)
  6. resetCredentialData(): reset the Credential Data. (used by Evaluation Manager)

Definition in file lcmaps_pluginmanager.c.


Define Documentation

#define MAXPROCS   4
 

maximum number of interface symbols in plugin modules

Definition at line 70 of file lcmaps_pluginmanager.c.

Referenced by PluginInit().

#define NUL   '\0'
 

NUL character

Definition at line 66 of file lcmaps_pluginmanager.c.


Enumeration Type Documentation

enum lcmaps_proctype_e
 

This enumeration type gives the different plugin symbol/function types.

Enumeration values:
INITPROC  this value corresponds to the plugin initialization function
RUNPROC  this value corresponds to the plugin run function (get credentials)
TERMPROC  this value corresponds to the plugin termination function
INTROPROC  this value corresponds to the plugin introspect function

Definition at line 82 of file lcmaps_pluginmanager.c.


Function Documentation

int clean_plugin_list lcmaps_plugindl_t **  list  )  [static]
 

clean (free) the list of plugins and call the plugin termination functions

Parameters:
list 
list pointer to list of plugins which has to be freeed.
Return values:
0 succes.
1 failure.

Definition at line 791 of file lcmaps_pluginmanager.c.

References lcmaps_plugindl_s::handle, lcmaps_plugindl_s::init_argc, lcmaps_plugindl_s::init_argv, lcmaps_log(), lcmaps_log_debug(), LCMAPS_MOD_SUCCESS, lcmaps_plugindl_t, lcmaps_plugindl_s::next, lcmaps_plugindl_s::pluginname, lcmaps_plugindl_s::procs, and TERMPROC.

Referenced by startPluginManager(), and stopPluginManager().

lcmaps_proc_t get_procsymbol void *  handle,
char *  symname
[static]
 

get procedure symbol from dlopen-ed library

Parameters:
handle handle of dynamic library
symname name of procedure symbol
Returns:
handle to procedure symbol or NUll

Definition at line 649 of file lcmaps_pluginmanager.c.

References lcmaps_log(), and lcmaps_proc_t.

Referenced by PluginInit().

int parse_args_plugin const char *  name,
const char *  argstring,
char **  xargv,
int *  xargc
[static]
 

convert plugin argument string into xargc, xargv

Parse the argument string of the plugin and create xargv and xargc

Parameters:
name name of the plugin (goes into xargv[0])
argstring string containing the arguments
xargv array of argument strings (has to be freed later)
xargc number of arguments
Return values:
0 succes.
1 failure.

Definition at line 588 of file lcmaps_pluginmanager.c.

References lcmaps_log(), lcmaps_log_debug(), LCMAPS_MAXARGS, LCMAPS_MAXPATHLEN, and lcmaps_tokenize().

Referenced by PluginInit().

lcmaps_plugindl_t * PluginInit lcmaps_db_entry_t db_handle,
lcmaps_plugindl_t **  list
[static]
 

Initialize the plugin.

This function takes a plugin LCMAPS database entry and performs the following tasks:

  • Create entry in (plugin)list
  • Open the plugins and check the symbols plugin_init and confirm_authorization
  • run plugin_init

Parameters:
db_handle handle to LCMAPS db (containing pluginname and pluginargs)
list pointer to plugin structure list to which (plugin) module has to be added
Returns:
pointer to newly created plugin structure or NULL in case of failure

Definition at line 365 of file lcmaps_pluginmanager.c.

References get_procsymbol(), lcmaps_plugindl_s::handle, lcmaps_plugindl_s::init_argc, lcmaps_plugindl_s::init_argv, INITPROC, INTROPROC, lcmaps_db_entry_t, lcmaps_findfile(), lcmaps_log(), lcmaps_log_debug(), LCMAPS_MAXARGSTRING, LCMAPS_MAXPATHLEN, LCMAPS_MOD_SUCCESS, lcmaps_plugindl_t, lcmaps_proc_t, MAXPROCS, lcmaps_plugindl_s::next, parse_args_plugin(), lcmaps_plugindl_s::pluginargs, lcmaps_db_entry_s::pluginargs, lcmaps_plugindl_s::pluginname, lcmaps_db_entry_s::pluginname, lcmaps_plugindl_s::procs, lcmaps_plugindl_s::run_argc, lcmaps_plugindl_s::run_argv, RUNPROC, and TERMPROC.

Referenced by startPluginManager().

int print_lcmaps_plugin int  debug_lvl,
lcmaps_plugindl_t plugin
[static]
 

print the lcmaps_plugindl_t structure

Parameters:
debug_lvl debugging level
plugin plugin structure
Return values:
0 succes.
1 failure.

Definition at line 690 of file lcmaps_pluginmanager.c.

References lcmaps_plugindl_s::handle, lcmaps_plugindl_s::init_argc, lcmaps_plugindl_s::init_argv, INITPROC, INTROPROC, lcmaps_getArgValue(), lcmaps_log_debug(), lcmaps_plugindl_t, lcmaps_plugindl_s::next, lcmaps_plugindl_s::pluginargs, lcmaps_plugindl_s::pluginname, lcmaps_plugindl_s::procs, lcmaps_plugindl_s::run_argc, lcmaps_plugindl_s::run_argv, RUNPROC, and TERMPROC.

Referenced by runPluginManager(), and startPluginManager().

int resetCredentialData  ) 
 

Reset the Credential data.

Wrapper around cleanCredentialData() to be used by the Evaluation Manager, before a new policy is evaluated

Returns:
the return value of cleanCredentialData()

Definition at line 982 of file lcmaps_pluginmanager.c.

References cleanCredentialData(), and lcmaps_log_debug().

Referenced by pdl_next_plugin().

int runPlugin const char *  pluginname  ) 
 

Run a plugin.

Run a plugin for the Evaluation Manager the result (succes or not will be passed to the Evaluation Manager)

Parameters:
pluginname the name of the plugin module
Return values:
0 plugin run succeeded
1 plugin run failed

Definition at line 1014 of file lcmaps_pluginmanager.c.

References lcmaps_log(), lcmaps_log_debug(), lcmaps_log_time(), lcmaps_plugindl_t, lcmaps_plugindl_s::next, lcmaps_plugindl_s::pluginname, lcmaps_plugindl_s::procs, lcmaps_plugindl_s::run_argc, lcmaps_plugindl_s::run_argv, and RUNPROC.

Referenced by runEvaluationManager(), and runPluginManager().

int runPluginManager lcmaps_request_t  request,
lcmaps_cred_id_t  lcmaps_cred,
int  npols,
char **  policynames
 

Run the PluginManager.

This function runs the PluginManager for user mapping. Contact Evaluation Manager --> runs plugins

Parameters:
request RSL request (job request)
lcmaps_cred user credential
npols number of policies to be considered for evaluation
policynames the names of the policies to be considered for evaluation
Return values:
0 user mapping succeeded
1 user mapping failed

Definition at line 866 of file lcmaps_pluginmanager.c.

References lcmaps_cred_id_t, lcmaps_extractRunVars(), lcmaps_getRunVars(), lcmaps_log(), lcmaps_log_debug(), lcmaps_plugindl_t, lcmaps_request_t, lcmaps_setArgValue(), lcmaps_plugindl_s::next, lcmaps_plugindl_s::pluginname, print_lcmaps_plugin(), lcmaps_plugindl_s::run_argc, lcmaps_plugindl_s::run_argv, runEvaluationManager(), and runPlugin().

Referenced by lcmaps_run(), lcmaps_run_and_return_poolindex(), lcmaps_run_and_return_username(), lcmaps_run_with_fqans_and_return_account(), and lcmaps_run_without_credentials_and_return_username().

int startPluginManager  ) 
 

start the PluginManager

start the PluginManager --> load plugins, start evaluation manager

Return values:
0 succes
1 failure

Definition at line 160 of file lcmaps_pluginmanager.c.

References clean_plugin_list(), getPluginNameAndArgs(), lcmaps_db_clean(), lcmaps_db_entry_t, lcmaps_db_read(), LCMAPS_ETC_HOME, lcmaps_genfilename(), lcmaps_log(), lcmaps_log_debug(), lcmaps_log_time(), LCMAPS_MAXPATHLEN, lcmaps_plugindl_t, lcmaps_db_entry_s::next, lcmaps_plugindl_s::next, PluginInit(), lcmaps_plugindl_s::pluginname, lcmaps_db_entry_s::pluginname, print_lcmaps_plugin(), and startEvaluationManager().

Referenced by lcmaps_init_and_logfile().

int stopPluginManager  ) 
 

Terminate the PluginManager module.

stop the PluginManager --> terminate plugins, clean plugin list, (stop evaluation manager)

Return values:
0 succes
1 failure

Definition at line 1070 of file lcmaps_pluginmanager.c.

References clean_plugin_list(), cleanCredentialData(), lcmaps_log(), lcmaps_log_debug(), printCredData(), and stopEvaluationManager().

Referenced by lcmaps_term().


Generated on Sun May 29 21:22:12 2005 for lcmaps by doxygen 1.3.5