cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib –l scha#include <scha.h>scha_err_t scha_resourcegroup_open( const char *rgname, scha_resourcegroup_t *handle);
scha_err_t scha_resourcegroup_open_zone( const char *cluster, const char *rg_name, scha_resourcegroup_t * handlep);
scha_err_t scha_resourcegroup_close(scha_resourcegroup_t handle);
scha_err_t scha_resourcegroup_get(scha_resourcegroup_t handle, const char *tag...);
scha_err_t scha_resourcegroup_get_zone(const char *cluster, scha_resourcegroup_t handlep, const char *rg_tag, ...);
scha_resourcegroup_open()、scha_resourcegroup_get()、scha_resourcegroup_close() の 3 つの関数を同時に使用することで Resource Group Manager (RGM) クラスタ機能の管理するリソースグループに関する情報を入手できます。
scha_resourcegroup_open() は、リソースグループへのアクセスを初期し、scha_resourcegroup_get() が使用するためのアクセスハンドルを返します。
rgname 引数には、アクセスするリソースグループの名前を指定します。
handle 引数は、関数が返す値を格納する変数のアドレスです。
scha_resourcegroup_get() 関数は、tag 引数に指定されるリソースグループの情報にアクセスします。tag は、scha_tags.h ヘッダーファイルのマクロで定義される文字列値であるはずです。タグ以降の引数は、tag の値に依存します。タグ以降に追加する引数は、情報を取り出すクラスタノードを指定する際に必要です。
引数リストの最後の引数は、tag で指定される情報の格納に適した変数型にする必要があります。このパラメータは出力引数で、取得したリソースグループの情報を格納します。関数の実行に失敗した場合、出力引数に値は返されません。scha_resourcegroup_get() から返される情報を格納するために割り当てられたメモリーは、scha_resourcegroup_get() に使用されたハンドルで scha_resourcegroup_close() が呼び出されるまで、そのまま残ります。
scha_resourcegroup_close() は、以前の scha_resourcegroup_open() の呼び出しから返された handle 引数を取ります。それは、このハンドルを無効にして、このハンドルで行われた scha_resourcegroup_get() 呼び出しの戻り値に割り当てられているメモリーを解放します。値を返す必要が生じるごとに、個々の get 呼び出しでメモリーが割り当てられる点に注意してください。ある呼び出しで値を返すために割り当てられたメモリーが、以降の呼び出しによって上書きされたり、再利用されたりすることはありません。
scha_resourcegroup_open_zone() 関数および scha_resourcegroup_get_zone() 関数はそれぞれ、scha_resourcegroup_open() および scha_resourcegroup_get() と同じ目的で使用され、追加の cluster 引数で、リソースグループが存在し、操作の対象となるゾーンクラスタの名前を指定します。これらの関数は、大域ゾーンで実行されるコードを特定のゾーンクラスタで動作させる必要がある場合に便利です。ゾーンクラスタ内で、異なるゾーンクラスタにアクセスするために使用することはできません。
scha_resourcegroup_open_zone() または scha_resourcegroup_get_zone() の cluster 引数が NULL の場合、クエリーは、呼び出しが実行されるクラスタで実行されます (つまり、NULL 引数での呼び出しは、それぞれ scha_resourcegroup_open() または scha_resourcegroup_get() と等しくなります)。
scha_resourcegroup_open_zone() から返されたハンドルを閉じるには、scha_resourcegroup_close() を使用します。cluster 引数は不要です。
scha_tags.h に定義されている次のマクロを scha_resourcegroup_get() 関数の tag 引数として使用できます。これらのマクロはリソースグループプロパティーに名前を付けます。リソースグループのプロパティー値が生成されます。RG_STATE プロパティーは、関数を呼び出したノード上の値を示します。
ここでは出力引数および追加引数の型を説明します。構造体と enum 型については scha_calls(3HA) のマニュアルページで説明されています。
出力引数の型は scha_str_array_t** です。
出力引数の型は scha_str_array_t** です。
出力引数の型は int* です。
出力引数の型は boolean_t* です。
出力引数の型は int* です。
出力引数の型は scha_str_array_t** です。
出力引数の型は boolean_t* です。
出力引数の型は int* です。
出力引数の型は scha_str_array_t** です。
出力引数の型は char** です。
出力引数の型は int* です。
出力引数の型は scha_rg_preemption_mode_t* です。
出力引数の型は int* です。
出力引数の型は scha_str_array_t** です。
出力引数の型は char** です。
出力引数の型は boolean_t* です。
出力引数の型は scha_str_array_t** です。
出力引数の型は char** です。
出力引数の型は boolean_t* です。
出力引数の型は scha_rgmode_t* です。
出力引数の型は char** です。
出力引数の型は char** です。
出力引数の型は char** です。
出力引数の型は char** です。
出力引数の型は char** です。
出力引数の型は scha_rgstate_t* です。
出力引数の型は scha_rgstate_t* です。追加引数の型は char* です。追加引数はクラスタノードを指定し、そのノード上のリソースグループの状態を返します。
出力引数の型は boolean_t* です。
出力引数の型は boolean_t* です。
出力引数の型は scha_str_array_t** です。
これらの関数は、次の戻り値を返します。
関数の実行に成功。
関数の実行に失敗。
関数の実行に成功。
その他のエラーコードについては、scha_calls(3HA) を参照してください。
次の例では、scha_resourcegroup_get() を用いて、example_RG 内のリソースリストを取得します。
main() { #include <scha.h> scha_err_t err; scha_str_array_t *resource_list; scha_resourcegroup_t handle; int ix; char * rgname = "example_RG"; err = scha_resourcegroup_open(rgname, &handle); err = scha_resourcegroup_get(handle, SCHA_RESOURCE_LIST, \ &resource_list); if (err == SCHA_ERR_NOERR) { for (ix = 0; ix < resource_list->array_cnt; ix++) { printf("Group: %s contains resource %s\n", rgname, resource_list->str_array[ix]); } } /* resource_list memory freed */ err = scha_resourcegroup_close(handle); }
インクルードファイル
ライブラリ
次の属性の説明は、attributes(5) を参照してください:
|
clnode(1CL), scha_resourcegroup_get(1HA) , scha_calls(3HA), attributes(5)