Parent Directory | Revision Log
Links to HEAD: | (view) (download) (annotate) |
Sticky Tag: |
NOTE: now the configuration for LoadLimit support is correctly read & parsed. :) IN constants.h (+) added new MAX_CHARS_TO_READ constant (set to 256). This var is used in utils::parseSpecialFile() function IN utils.cpp (+) in parseSpecialFile() function: using new MAX_CHARS_TO_READ constant.
IN constants.h (+) added 2 new constants used by llSupport class: LOADLIMIT_CONF_FILE constant (set to "/etc/gomd/llsupport.conf") and LOADLIMIT_HPC_FILE (set to "/proc/hpc/admin/loadlimit").
IN etc/llsupport.conf (+) added configuration file fo LoadLimit feature support. IN llSupport.cpp (-) added isLLEnabled() function to check if loadlimit support is enabled. IN Makefile.no_libgtop/Makefile.with_libgtop (+) added etc/llsupport.conf file to installation IN globalInitializer.h/globalInitilializer.cpp (+) added llSupport class initialization stuff.
IN constants.h (+) added INFINITE_TIME constant IN utils.h/utils.cpp (r) renamed executeCommandAndGetChildOutput() as executeCommandAndReturnChildOutput() (+) in executeCommandAndReturnChildOutput(): added INFINITE_TIME as default value => we'll wait for natural program exit instead of killing it after a specified non-infinite TTL.
(N) commit by: rejected IN constants.h (+) added PROCESS_TIME_TO_LIVE constant (set to 30) IN utils.cpp (+) added child-process time-to-live handling in execCommandAndGetChildOutput() function: if you invoke a command that takes a long time (>= PROCESS_TIME_TO_LIVE seconds), the process will be automagically killed and its ouput returned to the client. (+) added sigAlarmHandler() function to handle SIGVTALRM signal (raised when the child-process TTL expires) (+) added lots of comments (+) some cleanups
IN constants.h (+) added XML_LOG_FILE macro (to set the output file for xml-based logging => STILL NOT FULLY IMPLEMENTED!)
NOTE: new import for chpoxSupport class (cleanups, start support for default behaviours) IN chpsupport.conf (+) added new configuration file sample IN chpoxSupport.h/chpoxSupport.cpp (+) added step #9 in run() function. It will invoke the re-appending of a PID if the process is included in the new chpox support configuration map. (+) added chpox status check in appendToPendingDumpsQueue() function. (+) added fillChpSupportConfiguration() function to fill the new m_chpSupportConfiguration map. (+) added printChpSupportConfiguration() fuction to pront the contents of m_chpSupportConfiguration map. (+) added stringToAutodumpType() functin to convert a string into its equivalent chpox_autodump_t. IN constants.h (+) added new constants: #define CHPOX_DUMP_ONCE 0 => dump once teh process #define CHPOX_DUMP_PERSISTENT 1 => dump periodically the process #define CHPOX_ALL_APPS 10 => default behaviour for all apps IN csCollector.cpp (+) added calls to new chpoxSupport::fillChpSupportConfiguration() e chpoxSupport::printChpSupportConfiguration() functions (to read the chpox support configuration file) IN Makefile.with_libgtop/Makefile.no_libgtop (+) added chpsupport.conf to "make install" and "make cw_install" IN utils.h/utils.cpp (+) added stringToLong() function (type #2).
NOTE: mayor update for chpoxSupport class IN chpoxProc.cpp (m) change from CHPOX_MAX_DUMPS to CHPOX_MAX_DUMPS_PER_PROCESS IN chpoxSupport.h/chpoxSupport.cpp (+) added dumpRegisteredProces() function => this function invoked process dump (==checkpointing). (+) in registerProcess() function => lots of changes (clenaups, checkpoint call, check is dump file was correctly generated, wait before checking for dump file,...) (+) in printRegisteredProcList() => cosmetics (+) tons of comments. IN constants.h (+) added #define CHPOX_DUMP_SIGNAL (signal id for checkpointing) (m) changed #define CHPOX_MAX_DUMPS to CHPOX_MAX_DUMPS_PER_PROCESS (m) changed #define CHPOX_DUMP_DIR /var/tmp to /tmp IN csCollector.h/csCollector.cpp (+) now the user will be asked for a valid PID to test the testRegisterProcess() function. OUTPUT EXAMPLE: [...] *************************************** * TESTING CHPOX SUPPORT (ALPHA) * *************************************** [TST]: this code is experimental! :) [TST]: please enter the PID of process to be checkpointed: 17719 [TST]: round #1 [TST]: try registering process with pid=17719 [CHP]: pid: [17719] cmdline: [/bin/bash] [CHP]: registering the libs needed by program /bin/bash. => /lib/libdl.so.2 => /lib/libc.so.6 => /lib/ld-linux.so.2 [CHP]: the program needs 3 libs. [CHP]: registering the app.... => 17719:31:9:/tmp/bash_20031102_123131_17719.dump [CHP]: dump signal (31) succesfully sent to target process (pid=17719) [CHP]: wait 10 seconds before continuing... [CHP]: dump file correctly created (file=/tmp/bash_20031102_123131_17719.dump) [CHP]: added a new entry to the list of registered procs. [CHP]: number of saved dumps for the registered proc: 1 [CHP]: the list of registered procs contains 1 entries. [TST]: round #2 [TST]: try registering again process with pid=17719 to test the saved-procs linked list. [CHP]: pid: [17719] cmdline: [/bin/bash] [CHP]: registering the libs needed by program /bin/bash. => /lib/libdl.so.2 => /lib/libc.so.6 => /lib/ld-linux.so.2 [CHP]: the program needs 3 libs. [CHP]: registering the app.... => 17719:31:9:/tmp/bash_20031102_123141_17719.dump [CHP]: dump signal (31) succesfully sent to target process (pid=17719) [CHP]: wait 10 seconds before continuing... [CHP]: dump file correctly created (file=/tmp/bash_20031102_123141_17719.dump) [CHP]: proc yet registered. [CHP]: updated the proc entry. [CHP]: number of saved dumps for the registered proc: 2 [TST]: round #3 [TST]: try registering again process with pid=17719 to test the saved-procs linked list. [CHP]: pid: [17719] cmdline: [/bin/bash] [CHP]: registering the libs needed by program /bin/bash. => /lib/libdl.so.2 [CHP]: the program needs 1 libs. [CHP]: registering the app.... => 17719:31:9:/tmp/bash_20031102_123151_17719.dump [CHP]: dump signal (31) succesfully sent to target process (pid=17719) [CHP]: wait 10 seconds before continuing... [CHP]: dump file correctly created (file=/tmp/bash_20031102_123151_17719.dump) [CHP]: proc yet registered. [CHP]: updated the proc entry. [CHP]: number of saved dumps for the registered proc: 3 [TST]: results... [TST]: you should see just one entry with 3 dumps => Entry #1 Required libs (3 libs found): - /lib/libdl.so.2 - /lib/libc.so.6 - /lib/ld-linux.so.2 Dump filenames (3 dump files found): - /tmp/bash_20031102_123131_17719.dump - /tmp/bash_20031102_123141_17719.dump - /tmp/bash_20031102_123151_17719.dump [TST]: notice we waited 10 seconds between a round and another one. [TST]: test end.
NOTE: new import for chpoxSupport class (added check for yet registered procs) IN chpoxProc.h/chpoxProc.cpp (+) added setRequiredLibs() function to set the libs required by the program (+) added setNewDump() function to add a new dump to the list of dump filenames. IN chpoxSupport.h/chpoxSupport.cpp (+) now registerProcess() function can handle also yet registered procs. (+) added updateList() function: creates a new entry for every new registered process or updates the entry for process already registered. (+) added printRegisteredProcList() to show the contents of the list of saved (==yet registered) procs. IN constants.h (+) added new #define CHPOX_MAX_DUMPS to set a max number of dumps per-process IN csCollector.h/csCollector.cpp (+) added testRegisterProcess() from main.cpp file. (+) testRegisterProcess() now registers three times the INIT process (PID=1) as test. IN main.cpp (+) moved testRegisterProcess() to csCollector class. IN utils.h/util.cpp (+) added new cloneStringLinkedLists() to copy a string linked list on another one. (N) EXAMPLE OF USE: - Launch gomd with --test-chpox/-tc command line option: # gomd -nd -tc (-nd is used to block gomd daemonizing) - Example of output (for the chpox-support test only): ... *************************************** * TESTING CHPOX SUPPORT (ALPHA) * *************************************** [TST]: this code is experimental! :) [TST]: round #1 [TST]: try registering INIT process (pid=1) [CHP]: pid: [1] cmdline: [/sbin/init] [CHP]: registering the libs needed by program /sbin/init. => /lib/libc.so.6 => /lib/ld-linux.so.2 [CHP]: the program needs 2 libs. [CHP]: registering the app.... => 1:31:9:/var/tmp/init_20031102_002433_1.dump [CHP]: added a new entry to the list of registered procs. [CHP]: the list of registered procs contains 0 entries. [CHP]: number of saved dumps for the registered proc: 1 [TST]: round #2 [TST]: try registering again INIT process (pid=1) to test the saved-procs linked list. [CHP]: pid: [1] cmdline: [/sbin/init] [CHP]: registering the libs needed by program /sbin/init. => /lib/libc.so.6 [CHP]: the program needs 1 libs. [CHP]: registering the app.... => 1:31:9:/var/tmp/init_20031102_002433_1.dump [CHP]: proc yet registered. [CHP]: updated the proc object. [CHP]: number of saved dumps for the registered proc: 2 [TST]: round #3 [TST]: try registering again INIT process (pid=1) to test the saved-procs linked list. [CHP]: pid: [1] cmdline: [/sbin/init] [CHP]: registering the libs needed by program /sbin/init. => /lib/libc.so.6 [CHP]: the program needs 1 libs. [CHP]: registering the app.... => 1:31:9:/var/tmp/init_20031102_002433_1.dump [CHP]: proc yet registered. [CHP]: updated the proc object. [CHP]: number of saved dumps for the registered proc: 3 [TST]: results... [TST]: you should see just one entry with 3 dumps => Entry #1 Required libs: - /lib/libc.so.6 - /lib/ld-linux.so.2 Dump filenames: - 1:31:9:/var/tmp/init_20031102_002433_1.dump - 1:31:9:/var/tmp/init_20031102_002433_1.dump - 1:31:9:/var/tmp/init_20031102_002433_1.dump [TST]: notice the dumps have identical name: [TST]: this code is really fast (maybe too fast)!!! :))). (Maybe this is due to Linux time() function)
NOTE: new import for chpoxSupport class IN chpoxProc.h/chpoxProc.cpp (+) added new class to save the each registerd proc+libs. IN chpoxSupport.h/chpoxSupport.cpp (+) now registerProcess works! This function starts looking for libs needed by a given proc then register the proc and the libs. Then the functions saves the infos about the proc (and libs) in a chpoxProc instance and, finally, adds the new object to a list of registered procs (this list will be used to easily unregister the procs, checks the status,...). IN constants.h (+) added new #define CHPOX_REGISTER_MECHANISM "9" and #define CHPOX_DUMP_DIR "/var/tmp" constants. IN main.cpp (+) added new --test-chpox/-tc command line option to test registering the init proc + all required libs. ;) IN Makefile.with_libgtop/Makefile.no_libgtop (+) added new chpoxProc class to compilation line.
NOTE: added new chpoxSupport class IN chpoxSupport.h/chpoxSupport.cpp (N) first import of this new class => here is the code to support the nice chpox app. (+) added isChpoxEnabled() function to see if chpox is installed and running IN constants.h (+) added new #define CHPOX_INFO_FILE "/proc/chpox/info" (used to check if chpox is enabled) IN csCollector.cpp (+) added check for chpox (to see if it's enabled) (+) added destructor (to do a cleanup at exit) IN Makefile.with_libgtop/Makefile.no_libgtop (+) added chpoxSupport class to compilation line
NOTE: from this release the daemon can be forced to read the (legacy) openMosix map file (/etc/[open]mosix.map) and use it instead of using the autodiscovery facility. Check the new daemon command line option: "--readmap/-rm". IN utils.h/utils.cpp (+) added containsLetters() function to check if a string contains letters => used in gomdSearcher:: IN constants.h (+) added new #define OM_NODESMAP_FILE to set the path to the openMosix map file IN csCollector.cpp (+) added readOpenMosixMapFile() to enable the start parsing of the (legacy) openMosix map file IN gomdSearcher.h/gomdSearcher.cpp (+) added getIPByHostname function to do a DNS lookup and to get the IP of a machine (given the hostname) (+) added getHostnameByIP() function to do a DNS reverse lookup and to get the hostName of a machine (given the IP) (+) added parseOmMapFileAndFillKnownGomdsMap() function to parse the (legacy) openMosix map file (/etc/[open]mosix.map) (+) added createKnownGomdMapEntry() to translate each line of /legacy) oM map file to a valid entry for the knownGomdMap (used in the whole gomdSearcher class) IN main.cpp (+) added new command line option "--readmap/-rm" => this option force to read the (legacy) openMosix map file (/etc/[open]mosix.map) and use it instead of using the autodiscovery facility
IN aclRulebook.cpp (+) added comments IN chSupport.cpp (+) added comments
NOTE: first release for the full SCX facility (with 2 security layers). - added cluster-wide support - linked to SCX command-check facility (1 security layer) - linked to updated checks of security class (2 security layer => require strict security mode enabled) The request processing sequence: - request is parsed, analyzed, splitted and finally executed (connHandler class) - if the security is set to strict mode, the parsed command is checked to see if it is blacklisted (security class) - the parsed command is checked to see if it is a valid, listed command (scxCmdsbook class). IN chSupport.h/chSupport.cpp (N) this new class ("ch" stands for "connHandler") contains 3 functions moved from the "official" connHandler class. These functions are not important for the life of connHandler and they are thread-safe by nature because they can be only read. The object (just one!) is created in csCollector (the global "service provider" for gomd) so each connHandler object shares it and can use it. (+) added 3 functions: - chSupport() => (was fillRulesArray() - showHelp() - showErrorCodes() IN connHandler.h/connHandler.cpp (+) added support for the full SCX mode. (+) huge cleanups (+) added string securityChecks() to perform common checks. (-) moved fillRulesArray(), showHelp() and showErrorCodes() to new chSupport class. (f) fixed huge bug while requesting node list with oM not started! IN constants.h (+) added SEC_FAKE_DIR constant used in security class. IN csCollector.h/csCollector.cpp (+) added support for chSupport. IN main.cpp (-) moved security class stuff to csCollector IN security.h/security.cpp (N) the updated security class includes some new security checks. To enable them, launch gomd with the -s/--security option. (+) added 3 new functions: - changeCurrWorkingDir() =>change the current working directory for gomd to a fake directory defined in constants.h (so commands executed by SCX are banished in this fake directory) - isOMEnabled() => check if oM is enabled and/or the node is properly configured - setStrictSecurity() => do perform all the checks (+) updated PS: I've just notice some small bugs => they will be corrected ASAP. PS#2: this is an huge update => the new stuff needs lots of tests. ASAP I'll provide an extended stress test (something like an test unit).
IN connHandler.h/connHandler.cpp (+) added executeCommand(string command) and generateSnapshot() functions. (+) added new param type support for a client request in analyzeOption() function: STRING. (+) changed info #103 format => [exec] cmd/xc/103 STRING (where STRING is a command+arguments like "ls /usr"). Notice [exec] is optional => short format handled in fixShortFormatRequest(). (+) huge cleanup in analyzeOption() IN constants.h (+) added new STRING macro
NOTE: first import for preliminar Secured Cluster-wide eXecution (SCX) support. Actually: - the security check is not linked - the command ("cat /etc/fstab") is hardcoded => ASAP the complete implementation. By the way: SCX supports "short" or "long" process. - the cluster-wide support must be added IN connHandler.cpp (+) added new info: exec cmd/xc/103 => starts a simple SCX test (no security check is performed, ATM). (+) cleanups (-) removed the ACL objects stuff => we'll use the all-inclusive updated csCollector class. IN csCollector.h/csCollector.cpp (+) now the object contains all the cool stuff (ACL, new SCX,..) => threads (connHandler objects) will use (+) cleanups IN scxCheck.h/scxCheck.cpp (N) used to check and execute command. Commands are executed in separate (child) process. We get the child process ouput and send it to the client. (+) added new checkCommand(), parseCommand(), execCommandAndGetChildOutput() functions. (+) cleanups IN scxRulebook.h/scxRulebook.cpp (N) used to read the list (book) of allowed commands. (+) added new getScxMap(), fillScxMap(), printScxMap() functions. IN main.cpp (+) updated to support the changed connHandler class IN supported_cmds (+) added new info entry: exec cmd/xc/103.
IN Makefile.no_libgtop/Makefile.with_libgtop (+) now gomd conf file are installed in /etc/gomd directory (+) cleanups IN constants.h (+) gomd runs loads file from /etc/gomd directory
IN connHandler.h/connHandler.cpp (+) added new showErrorCodes() function for the new option "get errorcodes/ec/102" IN constants.h (+) added error codes IN omInfo.cpp/utils.cpp/gomdSearcher.cpp (+) using the new error codes defined in constants.h IN supported_cmds (+) added new available option: "get errorcodes/ec/102"
IN constants.h (m) default highest IP to search for clusterSnapshot now is set to 10 (#define GOMD_SEARCHER_IP_TO_PING 10)
*** empty log message ***
IN connHandler.h/connHandler.cpp (+) added support for HTML snapshot in option #34 handling
IN constants.h (+) added KNOWN_COMGDS_FILE constant to specify how to save the list of known gomds (+) added GOMD_SEARCHER_IP_TO_PING constant to specify the upper value for range IP (to be "pinged") IN connHandler.h/connHandler.cpp (+) added support for new "start autodiscovery/ad/100" option (used to invoke gomd autodiscovery facility) IN gomdSearcher.h/gomdSearcher.cpp (+) added setLocalIP() function to set the IP used to get the subnet address (+) added saveKnownGomdsMapToFile() function to save the list of the discovered gomds to a file IN main.cpp (+) cosmetics IN supported_cmds (+) added new entry for the autodiscovery facility ("start autodiscovery/ad/100") IN utils.h/utils.cpp (+) added openFile(), writeToOpenFile() and closeOpen() functions to get full write control on a file (used in saveKnownGomdsMapToFile() function to avoid opening/closing file to write a single line :) ) IN README (u) updated the commoncpp release note to .13 (latest available release)
NOTE: from this release I renamed important files (gomd.h/gomd.cpp) (r) renamed gomd.h to connHandler.h (r) renamed gomd.cpp to connHandler.cpp I made this change to avoid confusion about the program (before this change word "gomd" referred to the project, to the daemon and the class implementing the client conn => ugly!) . IN Makefile.with_libgtop/Makefile.no_libgtop/main.cpp (m) modified #include and objects to support connHandler.h/connHandler.cpp (they were gomd.h/gopmd.cpp) IN constants.h (+) cosmetics IN compile.sh (m) modify compilation order: now library and examples will be built before the daemon (as the daemon, in afuture, will depend on the library) (r) renamed locateLibgtop() to findLibgtop() (r) renamed locateCommoncpp() to findCommoncpp() (m) findLibgtop() and findCommoncpp() now use std UNIX "find" program to look for dependencies IN README (m) modified the note about the use of "locate" as the program now used "find".
IN all .h/.cpp of the daemon (+) added some notes about license,... IN all .h (+) added #ifndef checks IN gomd.cpp (+) added new option "get xcpuinfo/xci/41" to get /proc/cpuinfo formatted contents (m) modified the opption "get xcpuload/xcl/40" to get cpu load (m) moved system-infos related options to a new help page, #5 (available only if gomd was built with libgtop support) IN main.cpp (+) added support for the two new options (get xcpuinfo and get xcpuload) IN supported_cmds (+) added two new option entries (command is the usual "get"; each option has a "x" prefix that stands for eXtra) - Get cpu "xcpuload" "xcl" "40" N.A. - Get /proc/cpuinfo contents "xcpuinfo" "xci" "41" N.A.
IN main.cpp (+) added two new command line options: --version/-v (prints program version then exits) and --help/-h. (prints program help then exits). (f) now uses new GOMD_VERSION definition instead of "simple" VERSION (the #define is included in constants.h file). IN constants.h (+) ranamed VERSION definition to GOMD_VERSION (for coherency with other definitions)
(N)changed the format for gomd answers (I need comments about this) Example: REQUEST: get load 1-3 OLD ANSWER FORMAT Node load (1) : -101 Node load (2) : 1 Node load (3) : <ERROR> NEW ANSWER FORMAT (1:-101) (2:1) (3:<ERROR>) This change has a lot of pros: - new format is compact - client will wait for just a single line (while with the old format, a clients doesn't know how many lines it has to wait for) - when the single line arrives, client gets all the value - format is standard -> (TYPE_OR_ID:VALUE) so can be parsed more easily Where: * TYPE is the type of information or a node ID * VALUE is the value related to the type of information or a specific node IN main.cpp (+) added m_answerBuffer string to support the new format: this buffer will contain the answer to the client's request. If the client's request contains more inner-requests => each answer to a inner-request will be appended to this variable => the variable will be sent to the client (a single line for all inner-requests) (c) old format code was commented (f) now we use std ANSI-C++ erase() function to cleanup string variables (f) a lot of cleanups IN gomd.cpp/gomd.h (+) added socketTimeout in gomd constructor (as second param) (T) TODO: fix socket timeout handling (uses new constnt CLIENT_TIMEOUT) (f) now we use std ANSI-C++ erase() function to cleanup string variables (f) a lot of cleanups IN constants.h (+) added CLIENT_TIMEOUT constant IN utils.h/utils.cpp (+) added trim() function to trim std ANSI-C++ strings
IN gomd.cpp/gomd.h (N) from now uses C++ strings instead of "pure" C ones (i.e. char*, char[],...): C++ strings are more secure and make the program more readable (N) from now uses C++ references instead of pointers (where possible) (+) added om_repeatLastRequest function to handle new option lastrequest|lr|30 (+) added om_repeatUpRequest, om_repeatDownRequest functions to scroll up and down the history but they are buggy so they are not usable yet. (+) added om_fixShortFormatRequests function to handle short-format for some commands (help & quit) examples: quit == get quit help 1 == get help 1 (+) help option without helpPage number now shows first page, so: help == get help == help 1 == get help 1 (f) now om_parseRequest() function uses commoncpp's StringTokenizer to parse the request ("old" ANSI-C strtok will be used no more). IN constants.h (-) removed constants: MAX_CMD_LENGTH, MAX_REQUEST_LENGTH, MAX_PARAM_LENGTH. Now they are unuseful IN requestHistory.cpp/requestHistory.h (+) added getLast function to handle new option lastrequest|lr|30 (+) added getUp, getDown functions to scroll up and down the history but they are buggy so they are not usable yet.
(f) renamed COMMAND_HISTORY_MAX_REQUEST to more readable/intelligible COMMAND_HISTORY_SIZE
(+) added COMMAND_HISTORY_MAX_REQUEST to specify the size for requestHistory objects (used in gomd class)
(N) cleanup
first import
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
savannah-hackers-public@gnu.org | ViewVC Help |
Powered by ViewVC 1.1.26 |