Sun Cluster 3.0 データサービス開発ガイド

VALIDATE メソッドの構文解析関数

RGM は、他のコールバックメソッドとは異なるパラメータを VALIDATE メソッドに渡します。したがって、VALIDATE メソッドには、他のメソッドとは異なる引数を構文解析する関数が必要です。VALIDATE メソッドや他のコールバックメソッドに渡される引数についての詳細は、rt_callbacks(1HA) のマニュアルページを参照してください。次に、VALIDATE メソッドの parse_args 関数を示します。


##############################################################################
# Validate 引数を構文解析する。
#
function parse_args # [args ...]
{
	typeset opt
	while getopts 'cur:x:g:R:T:G:' opt
	do
						case "$opt" in
						R)
									# DNS リソースの名前
									RESOURCE_NAME=$OPTARG
									;;
						G)
									# リソースが構成されるリソースグループ
									# の名前
									RESOURCEGROUP_NAME=$OPTARG
									;;
						T)
									# リソースタイプの名前
									RESOURCETYPE_NAME=$OPTARG
									;;
						r)      
									# メソッドはシステム定義プロパティ
									# にアクセスしていない。したがって、
									# このフラグは動作なし。
									;;
						g)
									# メソッドはリソースグループプロパティ
									# にアクセスしていない。したがって、
									# このフラグは動作なし。
									;;
						c)
									# Validate メソッドがリソースの作成中に
									# 呼び出されていることを示す。したが
									# って、このフラグは動作なし。
									;;
						u)
									# リソースがすでに存在しているときは、
									# プロパティの更新を示す。Confdir 
									# プロパティを更新する場合、Confdir 
									# がコマンド行引数に現れるはずである。
									# 現れない場合、メソッドは
									# scha_resource_get を使用して 
									# Confdir を探す必要がある。
									UPDATE_PROPERTY=1
									;;
						x)
									# 拡張プロパティのリスト。プロパティ
									# と値のペア。区切り文字は「=」
									PROPERTY=`echo $OPTARG | awk -F= '{print $1}'`
									VAL=`echo $OPTARG | awk -F= '{print $2}'`

									# Confdir 拡張プロパティがコマンド行
									# 上に存在する場合、その値を記録する。
									if [ $PROPERTY == "Confdir" ]; then
												CONFDIR=$VAL
												CONFDIR_FOUND=1
									fi
									;;
						*)
								logger -p ${SYSLOG_FACILITY}.err ¥
								-t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] ¥
								"ERROR: Option $OPTARG unknown"
								exit 1
								;;
						esac
	done
}

他のメソッドの parse_args 関数と同様に、この関数は、リソース名を取得するためのフラグ (R)、リソースグループ名を取得するためのフラグ (G)、RGM から渡されるリソースタイプを取得するためのフラグ (T) を提供します。

このメソッドはリソースが更新されるときに拡張プロパティの妥当性を検査するために呼び出されるため、r フラグ (システム定義プロパティを示す)、g フラグ (リソースグループプロパティを示す)、c フラグ (リソースの作成中に妥当性の検査が行われていることを示す) は無視されます。

u フラグは、UPDATE_PROPERTY シェル変数の値を 1 (TRUE) に設定します。x フラグは、更新されているプロパティの名前と値を取得します。更新されているプロパティの中に Confdir が存在する場合、その値が CONFDIR シェル変数に格納され、CONFDIR_FOUND 変数が 1 (TRUE) に設定されます。