Looking at some old docs from Veritas about SG dependancies --
1) SGs can have multiple parent SGs
2) SG can have only one Child SG
3) A group dependency tree can be no more than 3 levels deep
4) SGs cannot have cyclical dependencies
There are 4 dependencies allowed --
a) online local -- a child must be online o a system beore a parent can be online
b) online global -- A child must online on the system before parent can be brought online (anywhere in the cluster)
c) online remote -- A child must be online on a remote system before parent can be online on local system
d) offline local -- A parent can be started on a local system if child is offline on the local system. However, this child can be running on any other system in the cluster
Per your problem --
Single node cluster with Service Groups A, B, C, & D. The following Service Group dependencies are required:
1. If SG A is online, SGs B, C, & D need to be offline.
Calls for "Offline Local" config -- where a child but be offline before the parent can be brought online.
So A can be online only if B or C or D are offline.
This means, A needs to have B, C and D as it's children. This is violation of rule 2 (see above)
2. If SG B is online, then SG A must be offline (due to previous rule), and only SG C or SG D can be online, but B, C, D cannot all be all online at the same time.
Not the same rule -- since one SG has to be parent while the other the child. I don't think it is possible to set up a bi-directional relationship between two sgs. So either A is the parent or B is the parent.
Going by case 1., A is the parent. So B needs to be offline on the system to have A online. But if A is offline, then you can set up a relationship between C and D such that you have a offline local relationship between the two (so either C or D will be up on the System).
I'm posting this without too much thought -- would love to see if there's an alternate solution and/or if your complete case is actually feasible.