cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib –l scha#include <scha.h>scha_err_t scha_resource_open( const char *rname, const char *rgname, scha_resource_t *handle);
scha_err_t scha_resource_open_zone(const char *cluster, const char *rs_name, const char *rg_name, scha_resource_t * handlep);
scha_err_t scha_resource_get(scha_resource_t handle, const char *tag,...);
scha_err_t scha_resource_get_zone(const char *cluster, scha_resource_t handlep, const char *rs_tag, ...);
scha_err_t scha_resource_close(scha_resource_t handle);
将 scha_resource_open()、scha_resource_get() 和 scha_resource_close() 函数一起使用可以访问资源组管理器 (Resource Group Manager, RGM) 群集工具管理的资源的相关信息。
scha_resource_open() 初始化资源访问,并返回一个将由 scha_resource_get() 使用的句柄。
scha_resource_open () 的 rname 参数指定要访问的资源的名称。rgname 参数是其中配置了该资源的资源组的名称。如果组名称未知,rgname 参数可以是 NULL。但是,如果提供组名称,可以提高该函数的执行效率。handle 参数是用于保存函数调用返回值的某个变量的地址。
scha_resource_get() 根据 tag 参数的指示访问资源信息。tag 参数应该是 scha_tags.h 头文件中的某个宏定义的一个字符串值。标记后面的参数取决于 tag 的值。可能需要在标记后面额外添加一个参数,用于指示要从中检索信息的群集节点或者指示特定于标记的其他信息。参数列表中最后一个参数的类型应该适合用于保存 tag 指定的信息。该参数是资源信息的输出参数。如果函数失败,不会为输出参数返回值。
对用于 scha_resource_get() 的句柄调用 scha_resource_close() 之前,所分配的用于保存 scha_resource_get() 返回的信息的内存将保持不变。请注意,使用相同的句柄和标记重复调用 scha_resource_get() 会导致分配新的内存。在一个调用中为返回值而分配的空间不会被后续调用覆盖和重新使用。
scha_resource_close() 函数接受上次调用 scha_resource_open() 时返回的 handle 参数。它将使该句柄失效,并释放为了保存使用该句柄执行的 scha_resource_get() 调用的返回值而分配的内存。
下文中列出了 scha_tags.h 中定义的可以用作 scha_resource_get() 的 tag 参数的宏。
指示输出参数和任何其他参数的类型。scha_calls(3HA) 中介绍了结构和 enum 类型。
scha_resource_open_zone() 和 scha_resource_get_zone() 函数的作用分别与 scha_resource_open() 和 scha_resource_get() 相同,且带有一个额外的 cluster 参数,用于指定资源组存在于其中且您要在其上执行操作的区域群集的名称。当代码在全局区域中执行,但需要在指定区域群集上操作时,这些函数十分有用。无法在某一区域群集中使用它们来访问其他区域群集。
如果 scha_resource_open_zone() 或 scha_resource_get_zone() 的 cluster 参数为 NULL,则会对从中执行调用的群集执行查询;换句话说,带有 NULL 参数的调用分别等效于 scha_resource_open() 或 scha_resource_get()。
要关闭由 scha_resource_open_zone() 返回的句柄,请使用 scha_resource_close()。不需要 cluster 参数。
下面列出了用于指定资源属性名称的宏。输出是资源的属性值。SCHA_RESOURCE_STATE、SCHA_STATUS、SCHA_NUM_RG_RESTARTS 和 SCHA_NUM_RESOURCE_RESTARTS 属性引用执行命令的节点上的值(请参见 r_properties(5))。
指示输出参数和任何其他参数的类型。
这些属性是在资源类型的资源类型注册 (Resource Type Registration,RTR) 文件中声明的。资源类型的实现定义了这些属性。
输出参数类型为 int*。
输出参数类型为 scha_str_array_t**。返回资源的所有扩展属性的名称。
输出参数类型为 char**。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 scha_extprop_value_t**。需要提供扩展属性名称的附加参数,其类型为 char*。返回本地节点的属性类型及其值。
当用户请求未指定明确值的节点上的该属性的值时,将会返回在 RTR 文件中声明的默认值。请参见 rt_reg(4) 手册页。
输出参数类型为 scha_extprop_value_t**。需要类型为 char* 的两个附加参数。第一个参数提供扩展属性的名称,第二个参数命名群集节点。返回指定节点的属性类型及其值。
当用户请求未指定明确值的节点上的该属性的值时,将会返回在 RTR 文件中声明的默认值。请参见 rt_reg(4) 手册页。
输出参数类型为 scha_failover_mode_t*。
输出参数类型为 int*。
输出参数类型为 boolean_t*。
输出参数类型为 char**。返回配置了资源的资源组的名称。
输出参数类型为 int*。
输出参数类型为 char**。
输出参数类型为 scha_str_array_t**。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 scha_switch_t*。返回值指示是否在本地节点上监视资源。
输出参数类型为 scha_switch_t*。需要命名群集节点的附加参数,其类型为 char*。返回值指示是否在指定节点上监视资源。
输出参数类型为 scha_str_array_t**。
输出参数类型为 int*。返回在执行此查询的区域中对该资源发生的资源重新启动请求数。有关更多详细信息,请参见 r_properties(5) 手册页。
输出参数类型为 int*。返回在执行此查询的区域中对该资源发生的资源组重新启动请求数。有关更多详细信息,请参见 r_properties(5) 手册页。
输出参数类型为 scha_switch_t*。返回值指示是否在本地节点上启用资源。
输出参数类型为 scha_switch_t*。需要命名群集节点的附加参数,其类型为 char*。返回值指示是否在指定节点上启用资源。
输出参数类型为 scha_str_array_t**。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 boolean_t*。
输出参数类型为 char**。
输出参数类型为 scha_str_array_t**。返回值列出适用于本地节点的依赖性。
输出参数类型为 scha_str_array_t**。需要命名群集节点的附加参数,其类型为 char*。返回值列出适用于指定节点的依赖性。
输出参数类型为 scha_str_array_t**。返回值列出适用于本地节点的依赖性。
输出参数类型为 scha_str_array_t**。需要命名群集节点的附加参数,其类型为 char*。返回值列出适用于指定节点的依赖性。
输出参数类型为 scha_str_array_t**。
SCHA_RESOURCE_DEPENDENCIES 标记的 Q 版本还会返回为资源依赖性声明的作用域或限定符(如果有)。r_properties(5) 手册页中介绍了 {LOCAL_NODE}、{ANY_NODE}、{FROM_RG_AFFINITIES} 和 @node 限定符。
输出参数类型为 scha_str_array_t**。
SCHA_RESOURCE_DEPENDENCIES_OFFLINE_RESTART 标记的 Q 版本还会返回为资源依赖性声明的作用域或限定符(如果有)。r_properties(5) 手册页中介绍了 {LOCAL_NODE}、{ANY_NODE}、{FROM_RG_AFFINITIES} 和 @node 限定符。
输出参数类型为 scha_str_array_t**。
SCHA_RESOURCE_DEPENDENCIES_RESTART 标记的 Q 版本还会返回为资源依赖性声明的作用域或限定符(如果有)。r_properties(5) 手册页中介绍了 {LOCAL_NODE}、{ANY_NODE}、{FROM_RG_AFFINITIES} 和 @node 限定符。
输出参数类型为 scha_str_array_t**。
SCHA_RESOURCE_DEPENDENCIES_WEAK 标记的 Q 版本还会返回为资源依赖性声明的作用域或限定符(如果有)。r_properties(5) 手册页中介绍了 {LOCAL_NODE}、{ANY_NODE}、{FROM_RG_AFFINITIES} 和 @node 限定符。
输出参数类型为 scha_str_array_t**。返回值列出适用于本地节点的依赖性。
输出参数类型为 scha_str_array_t**。需要命名群集节点的附加参数,其类型为 char*。返回值列出适用于指定节点的依赖性。
输出参数类型为 scha_str_array_t**。返回值列出适用于本地节点的依赖性。
输出参数类型为 scha_str_array_t**。需要命名群集节点的附加参数,其类型为 char*。返回值列出适用于指定节点的依赖性。
输出参数类型为 char**。
输出参数类型为 scha_rsstate_t*。返回本地节点的资源的 RESOURCE_STATE 属性值。
输出参数类型为 scha_rsstate_t*。需要命名群集节点的附加参数,其类型为 char*。返回指定节点的资源的 RESOURCE_STATE 属性值。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 boolean_t*。
输出参数类型为 int*。
输出参数类型为 scha_status_value_t**。返回本地节点的资源的 STATUS 属性值。
输出参数类型为 scha_status_value_t**。需要命名群集节点的附加参数,其类型为 char*。返回指定节点的资源的 STATUS 属性值。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 boolean_t*。
输出参数类型为 int*。
输出参数类型为 int*。
输出参数类型为 boolean_t*。
下面列出了用于指定资源类型属性名称的宏。输出是资源类型的属性值。有关资源类型属性的说明,请参见 rt_properties(5)。
输出参数类型为 int*。
输出参数类型为 char**。
输出参数类型为 boolean_t*。
输出参数类型为 char**。
输出参数类型为 boolean_t*。
输出参数类型为 char**。
输出参数类型为 scha_initnodes_flag_t*。
输出参数类型为 scha_str_array_t**。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 scha_str_array_t**。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 boolean_t*。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 boolean_t*。
输出参数类型为 char**。
输出参数类型为 boolean_t*。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 char**。
输出参数类型为 char**。
如果该资源类型声明了 GLOBAL_ZONE_OVERRIDE 资源属性,则由 SCHA_GLOBAL_ZONEoptag 检索的值是 GLOBAL_ZONE_OVERRIDE 属性的当前值,而不是 GLOBAL_ZONE 属性的值。有关更多信息,请参见 rt_properties(5) 手册页中的 Global_zone 属性和 r_properties(5) 手册页中的 Global_zone_override 属性的描述。
这些函数返回以下值:
该函数成功。
该函数失败。
该函数成功。
有关其他错误代码的描述,请参见 scha_calls(3HA)。
以下示例使用 scha_resource_get() 来获取某个资源的 Retry_count 属性的值,以及名为 Loglevel 的扩展属性的值。
main() { #include <scha.h> scha_err_t err; int retry_count_out; scha_extprop_value_t *loglevel_out; scha_resource_t handle; /* a configured resource */ char * resource_name = "example_R"; /* resource group containing example_R */ char * group_name = "example_RG"; err = scha_resource_open(resource_name, group_name, &handle); err = scha_resource_get(handle, SCHA_RETRY_COUNT, &retry_count_out); /* Given extension property must be defined in resourcetype RTR file. */ err = scha_resource_get(handle, SCHA_EXTENSION, "LogLevel", &loglevel_out); err = scha_resource_close(handle); printf("The retry count for resource %s is %d\n", resource_name, retry_count_out); printf("The log level for resource %s is %d\n", resource_name, loglevel_out->val.val_int); }
头文件
库
有关以下属性的描述,请参见 attributes(5):
|
scha_resource_get(1HA)、scha_calls(3HA)、scha_strerror(3HA)、attributes(5)、r_properties(5)、rt_properties(5)、rt_reg(4)