For this example the following configuration is used:
; this example uses the ni plugin syntax
; 1. metadata
[rootkey/ref]
check/reference = recursive
[otherkey/newref]
check/reference = alternative
; 2. configuration data
rootkey/ref = ../otherkey
otherkey/ref = ../yetanotherkey
otherkey/newref = ../otherotherkey
otherotherkey/ref = ../nonexistent
otherotherkey/newref = ../mergekey
yetanotherkey/ref = ../mergekey
yetanotherkey/newref = ../nonexistent
mergekey/ref = ../finalkey
mergekey/newref = ../finalkey
finalkey = ""We mount it by executing:
cat << EOF > alternative.ini
; this example uses the ni plugin syntax
; 1. metadata
[rootkey/ref]
check/reference = recursive
[otherkey/newref]
check/reference = alternative
; 2. configuration data
rootkey/ref = ../otherkey
otherkey/ref = ../yetanotherkey
otherkey/newref = ../otherotherkey
otherotherkey/ref = ../nonexistent
otherotherkey/newref = ../mergekey
yetanotherkey/ref = ../mergekey
yetanotherkey/newref = ../nonexistent
mergekey/ref = ../finalkey
mergekey/newref = ../finalkey
finalkey = ""
EOF
kdb mount alternative.ini user:/tests/reference/alternative ni referenceThe file contains a specification, which marks user:/tests/reference/alternative/rootkey/ref
as our root reference key and user:/tests/reference/alternative/otherkey/newref as an
alternative reference.
The actual configuration contains then a structure which is processed by the plugin like follows:
user:/tests/reference/alternative/rootkey/refis read and its reference validated.user:/tests/reference/alternative/otherkey/refis read and its reference validated.user:/tests/reference/alternative/otherkey/newrefis discovered as an alternative reference and stored for later.user:/tests/reference/alternative/yetanotherkey/refis read and its reference validated.user:/tests/reference/alternative/mergekey/refis read and its reference validated.user:/tests/reference/alternative/finalkeydoes not contain a reference, so we stop here.- Processing of the alternative reference chain from
user:/tests/reference/alternative/otherkey/newrefstarts. user:/tests/reference/alternative/otherkey/newrefis read and its reference validated.user:/tests/reference/alternative/otherotherkey/newrefis read and its reference validated.user:/tests/reference/alternative/mergekey/newrefis read and its reference validated.user:/tests/reference/alternative/finalkeydoes not contain a reference, so we stop here.
The resulting reference graph looks like this:
As you can see, the plugin completely ignores user:/tests/reference/alternative/yetanotherkey/newref as well as
user:/tests/reference/alternative/otherother/ref and in turn does not throw an error because
user:/tests/reference/alternative/nonexistent does not exist. However, the plugin does still exhaustively check
both of the alternative reference chains. If you want to prohibit this, you can set the metakey
check/reference/restrict to an empty value on whichever key you want to be a leaf node in the graph.
After we are done we can unmount the example with:
kdb umount user:/tests/reference/alternative