RGM は、次に示すように、すべてのコールバックメソッド (Validate を除く) を呼び出します。
method_name -R resource_name -T resource_type_name -G resource_group_name |
method_name は、コールバックメソッドを実装するプログラムのパス名です。 データサービスは、各メソッドのパス名を RTR ファイルに指定します。 このようなパス名は、RTR ファイルの Rt_basedir プロパティに指定されたディレクトリからのパスになります。 たとえば、サンプルのデータサービスの RTR ファイルでは、ベースディレクトリとメソッド名は次のように指定されます。
RT_BASEDIR=/opt/SUNWsample/bin; START = dns_svc_start; STOP = dns_svc_stop; ... |
コールバックメソッドの引数はすべて、フラグ付きの値として渡されます。-R はリソースインスタンスの名前を示し、-T はリソースのタイプを示し、-G はリソースが構成されているグループを示します。 コールバックメソッドの詳細については、rt_callbacks (1HA) のマニュアルページを参照してください。
Validate メソッドを呼び出すときは、追加の引数 (リソースのプロパティ値と呼び出されるリソースグループ) を使用します。 詳細は、プロパティ更新の処理を参照してください。
各コールバック、メソッドには、渡された引数を構文解析する関数が必要です。 すべてのコールバックメソッドには同じ引数が渡されるので、データサービスは、アプリケーション内のすべてのコールバックメソッドで使用される単一の構文解析関数を提供します。
次に、サンプルのアプリケーションのコールバックメソッドで使用される parse_args() 関数を示します。
#########################################################################
# プログラム引数の解析。
#
function parse_args # [args ...]
{
typeset opt
while getopts 'R:G:T:' opt
do
case "$opt" in
R)
# DNS リソース名。
RESOURCE_NAME=$OPTARG
;;
G)
# リソースが構成されたリソースグループ名。
RESOURCEGROUP_NAME=$OPTARG
;;
T)
# リソースタイプ名。
RESOURCETYPE_NAME=$OPTARG
;;
*)
logger -p ${SYSLOG_FACILITY}.err \
-t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
"ERROR: Option $OPTARG unknown"
exit 1
;;
esac
done
}
|
サンプルのアプリケーションの PROBE メソッドはユーザー定義メソッドですが、Sun Cluster コールバックメソッドと同じ引数で呼び出されます。 したがって、このメソッドには、他のコールバックメソッドと同じ構文解析関数が含まれています。
構文解析関数は、次に示すように、MAIN の中で呼び出されます。
parse_args ”$@” |