blob: 6b4a7e796d0946ceaefa4ac447c99b44dadc17b4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# DeconfigGard
## Deconfigure by association path
### _deconfigByAssoc
###### Propagates the deconfigured target to its associated targets
- first deconfigures all functional children-by-containment
- checks if affinity deconfigure is allowed
- allowed if not at runtime
- always allowed for all speculative deconfigures
- always allowed if EQ, EX or CORE target
- deconfigures target's affinity children (if allowed)
- deconfigures parent's affinity path via _deconfigParentAssoc (if allowed)
### _deconfigParentAssoc
###### Works the deconfig up the parent branch (handles special cases)
- handles special cases (FCO, PEER, etc) for select target types
- If no special case, then call _deconfigAffinityParent
### _deconfigAffinityParent
###### Deconfigure parent if is has no functional children
- checks if it is allowed to rollup deconfigure to parent
- Checks base attribute: ATTR_PARENT_DECONFIG_DISABLED
- 0 = allow parent deconfigure (default)
- 1 = do not allow parent deconfigure
- Grab parent target via new utility: getImmediateParentByAffinity(childTarget)
- Checks parent is functional
- Check if parent target has a functional AFFINITY child.
- If no functional child found, then deconfigure the parent target and then call
_deconfigParentAssoc passing the parent target. We already know this parent
target has no functional children, so we just continue the deconfigure
rollup to the next level.
|