flux-framework/flux-core — pull request #122 by garlick (2014-12-18 00:25:39+00:00)
Title: module management rework

This PR includes changes to the `flux-module` command, modctl comms module, and the API for module management.

The module management API can now be applied to any flux service that wants to support dynamically loadable modules. They have to implement the operations described in RFC 5, using provided utility functions, and then `flux-module` and `modctl` can operate on them.

There are detailed comments in the commits, especially b16122e and 373ce64.
Here is a demo of how the tools apply to a comms module (`parent.so`) that itself loads a module (`child.so`).
```
$ ./flux start -s8
cmbd: 2745-0: starting shell
jimbo /home/garlick/proj/flux-core/src/cmd > ./flux module -a list
Module Size Digest Idle Nodeset
modctl 693824 C56F6AB 0 [0-7]
wrexec 685650 46047BE 1 [0-7]
mecho 661715 0F055F7 1 [0-7]
api 603102 3C9E402 0 [0-7]
kvs 667659 CAF43BB 0 [0-7]
job 666099 5156086 1 0
resrc 666711 3657874 1 [0-7]
barrier 598532 B7E46DF 1 [0-7]
live 708351 6E063BA 0 [0-7]
$ ./flux module -a load ../test/module/.libs/parent.so
$ ./flux module -a list
Module Size Digest Idle Nodeset
modctl 693824 C56F6AB 0 [0-7]
parent 656693 0FC1912 14 [0-7]
wrexec 685650 46047BE 14 [0-7]
mecho 661715 0F055F7 14 [0-7]
api 603102 3C9E402 0 [0-7]
kvs 667659 CAF43BB 0 [0-7]
job 666099 5156086 14 0
resrc 666711 3657874 14 [0-7]
barrier 598532 B7E46DF 14 [0-7]
live 708351 6E063BA 0 [0-7]
$ ./flux module -a load ../test/module/.libs/child.so foo=42 bar=abcd
$ ./flux module -a list parent
Module Size Digest Idle Nodeset
parent.child 648943 2A9F4F8 0 [0-7]
```