gendlib - perl library for querying genders file
require ``/usr/lib/genders/gendlib.pl'';
This package contains common functions for manipulating the
genders file. Previously this code existed only in the nodeattr command, but
applications that must repeatedly call nodeattr would spend a great deal of
time reading and parsing the genders file. These functions create an
in-memory cache of genders on the first call; subsequent calls need only
reference the in-memory copy and are thus speeded up.
Initialization:
Genders::init([$path_genders])
- Function normally called internally for initialization. It can be called
externally with a non-default genders file path and subsequent operations
will use this non-default data. May be called more than once to change
genders file.
Simple Queries:
Genders::hasattr($attribute, [$node])
- Return 1 if node has attribute, 0 if not. If node is not specified, use
local node.
Genders::getattrval($attribute, [$node])
- Return value of attribute held by node, or empty string if no value or
node does not have attribute. If node is not specified, use local
node.
Genders::getnode([$attribute])
- Return a list of nodes having the specified attribute. If a value is also
specified ("attr=val"), only nodes with the specified attribute
and value are returned. If no attribute is specified, getnode returns all
the nodes listed in the genders file.
Genders::getattr([$node])
- Return a list of attributes held by node. If node is not specified, use
local node.
Complex Queries:
Genders::getallattr()
- Return a list of all attributes in the genders file (one cluster
only).
Genders::get_node_hash(\%node)
- Get a copy of hash of attributes to node lists for the current cluster (a
"hash of lists"). Ensure that keys exist for all possible
attributes across clusters (though they may point to empty lists).
Genders::get_clusters()
- Return a list with the local cluster name as the first and only element.
get_clusters() returns a list instead of a scalar for backwards
compatability. If the local cluster name is not known, null is
returned.
Genders::gendexp($exp, [$node])
- Evaluate expression involving genders attributes and return the result of
the evaluation. Any legal perl expresion using numeric constants, genders
attributes (which are converted into $variables), and the following
operators is valid: !, ||, &&, *, +, -, /. If $node is not
specified, assume the local host.
Conversion:
Genders::to_altnames()
- Given a list of hostnames as they appear in the genders file, return a
list of alternate names. On the SP, genders names are assumed to be the
initial_hostnames, and we use the SDR to convert to reliable_hostnames. On
other systems, we look for the value of the altname attribute in the
genders file. If the input hostname cannot be converted, it is preserved
in the output.
Genders::to_gendnames()
- Performs the inverse of the to_altnames() function. Just like
to_altnames(), an input hostname is preserved in the output if it cannot
be converted.