scha_get_fullname - return the cluster node name in which a resource group executes
scha_err_tscha_get_fullname(const char *zonename, char **fullname)
The scha_get_fullname() function returns the logical node name of a zone context on the local node. The out-parameter fullname is set to a string containing a cluster node name. The string needs to be freed by the caller.
If zonename is NULL, the zone context depends on where this call is executed.
If executed in the global zone, it returns the local node name.
If executed in a zone cluster, it returns the zone-cluster node name, not the global-cluster node name.
If zonename is non-NULL, this is meant to be called in the global zone on behalf of a resource configured in the non-global zone specified by zonename.If zonename is the name of a zone cluster, which is also the name of the underlying non-global zone, it returns the zone-cluster node name.
If this function is called from a resource callback method and the zonename parameter is set to the output of the scds_get_zone_name() function, the resulting fullname will match the current entry in the resource-group node list in all cases:
Global cluster or zone cluster
global_zone resource type or normal resource type
This function returns the following values:
The function succeeded.
The function failed.
The function succeeded.
See scha_calls(3HA) for a description of other error codes.
The following example uses scha_get_fullname() to obtain a fullname string representing the nodename context in which the current program is executing, and searches for this name in the resource group's node list:
#include <scha.h> #include <libdsdev.h> main(int argc, char *argv[]) { scha_err_t err; scds_handle_t handle; char *myzonename; char *fullname; const scha_str_array_t *rgnodelist; uint_t ix; if (scds_initialize(&handle) != SCHA_ERR_NOERR) { /* handle the error */ ... } myzonename = scds_get_zone_name(handle); rgnodelist = scds_get_rg_nodelist(handle); err = scha_get_fullname(myzonename, &fullname); ... for (ix = 0; ix < rgnodelist->array_cnt; ix++) { if (strcmp(fullname, rgnodelist->str_array[ix]) == 0) { /* found this node in the node list */ ... } } ... }
See attributes (5) for descriptions of the following attributes:
|
scds_calls(3HA), scds_initialize(3HA), scha_cluster_getnodename(3HA), attributes (5)