ターゲットホストにすでにインストールされているコンポーネントに関連付けられた制御ブロックを実行するには、<call> ステップを使用します。
<call> ステップには次の子要素があります。
<argList> – オプション要素で、制御ブロックに渡す引数の一覧。この要素を指定する場合、この要素は 1 回しか出現できません。
インストール済みコンポーネントターゲッター – 実行する制御ブロックが含まれるコンポーネントを特定するオプション要素。この要素は <call> ステップがコンポーネントに出現する場合はオプションになりますが、ステップがプランに出現する場合はオプションではありません。この要素を省略すると、<thisComponent> ターゲッターが使用されます。この要素を指定する場合、この要素は 1 回しか出現できません。詳細は、「インストール済みコンポーネントターゲッター」を参照してください。
<call> 要素には、entityName 型の 1 つの必須属性 blockName があり、これはインストール済みコンポーネントに対して実行する制御ブロックの名前です。
<argList> 要素は、<call>、<install>、<uninstall>、<execSubplan>、および <addSnapshot> ステップの子です。この要素は、呼び出されるサービスに引数として渡される一連の変数を指定します。
呼び出されるサービスの方は、待ち受ける変数を <paramList> 要素を使用して宣言します。<argList> 内の変数と呼び出される <paramList> 内の変数は同じである必要はありません。
<paramList> 内で宣言される各変数のうちデフォルト値を持たないものについては、<argList> 内に同じ名前の対応する変数が含まれる必要があります。この条件が満たされない場合、プラン実行時にプリフライトエラーが発生します。プロビジョニングシステムは、 (<argList> 内に対応する変数が存在する) 呼び出される <paramList> で、各変数を実行します。 <paramList> 内の変数の値は、呼び出されるサービスの実行時に <argList> 内の対応する変数の値を取得します。
<argList> 内の変数のうち呼び出される <paramList> 内の変数に対応しないものは、単純に無視されます。よって、下位互換性を維持しながら、パラメタを追加することによりサービスを再定義できます。そのため、1 つのプランで同じサービスの新旧両方のバージョンを呼び出すことができます。
<argList> 要素の引数は属性として表現されます。引数の順番はあまり重要ではありません。次の <argList> は 2 つの引数 password と path を宣言しています。
<argList password=":[password]" path="/tmp"/> |
<argList> 要素には、属性を少なくとも 1 つは指定する必要があります。各属性は、呼び出されるサービスに渡される名前付き変数として扱われます。各属性の名前は置換変数参照のない識別子でなければならず、属性名は呼び出されるサービス内のパラメタの名前に対応する必要があります。各属性の値は任意の文字列であり、包含するスコープ内の変数の参照を含むことができます (<argList> 内のほかの引数は含むことができない)。