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 [$SYSLOG_TAG] \ "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) に設定されます。