Description of problem:
When install CMAN, it forgets to include magma/magma-plugins, which are required to communicate with CCSD.
Version-Release number of selected component (if applicable):
rpm install ccsd and cman and then start up cman with a simple cluster.conf file. CMAN cannot contact CCSD without magma/magma-plugins
Steps to Reproduce:
cman cannot contact CCSD
cman has an explicit 'requires' on ccs
ccs has an explicit 'requires' on magma
However, there is no installation dependency on magma-plugins containted with the RPMs themselves. This is very deliberate and is done because it would lead to a circular dependency loop during both build-time and installation.
Here is the build dependency:
cman gulm <-+ |
| | | | | |
| v v | | |
| magma <--- magma-plugins
v ^ |
ccs -+ |
This leads to a required build order like this (for these packages):
cman | gulm
Run-time dependencies looks like this on the surface:
Once you install magma-plugins, the run-time dependencies look like this:
^ +--+--+ ^
| | |
| v |
| ccs |
| | |
| v |
| magma |
| | |
| v |
Magma is an automatic cluster switch API. It is a bit like Linux's VFS layer, but for cluster software. It goes through plugins trying to connect to the running cluster infrastructure based on the installed plugins if any exist. If there are none, it returns failures to the calling application(s) when they try to connect to the cluster infrastructure using the magma calls.
Cman and gulm require configuration information, which is provided and managed by ccsd. Ccsd requires things from the cluster infrastructure, notably membership and quorum states.
However, requiring the installation of 'magma-plugins' from 'ccs', 'cman', or 'gulm' would introduce a dependency loop.
I believe ccsd produces the following error if magma-plugins is not installed:
Failed to connect to cluster manager.
Hint: Magma plugins are not in the right spot.
Appropriate package selection for Red Hat GFS 6.1 is documented here:
It notes that 'magma-plugins' is required whether utilizing gulm or dlm as the locking layer for GFS.