properties-default-sources 構成要素は、parameters-default-sources 構成要素と同様です。parameters-default-sources 構成要素がStyleBook内で既存のパラメーター(他のStyleBookからのもの)の再利用を可能にするのに対し、properties-default-sources 構成要素は、既存のソースに基づいてコンポーネントのプロパティをユーザーが指定できるようにします。
コンポーネントのプロパティは、StyleBookのさまざまなセクションに分散している場合があります。たとえば、プロパティはオブジェクトパラメーター、オブジェクトを返す置換、他のコンポーネントのプロパティ、または他のコンポーネントの出力から取得されることがあります。このような場合、StyleBookの他のセクションに存在するプロパティを、コンポーネントの定義内で再定義する必要があります。これは明らかに冗長であり、エラーにつながる可能性があります。この問題に対処するため、properties-default-sources 構成要素を使用できます。properties-default-sources 構成要素は、各項目がコンポーネントのプロパティのソースを識別するリストです。
たとえば、lbvserver構成を作成するコンポーネントを考えてみましょう。このコンポーネントは、lbvserverのプロパティを次のように定義する必要があります。
parameters:
-
name: lb
type: ns::lbvserver
components:
-
name: lb-comp
type: ns::lbvserver
properties:
name: $parameters.lb.name
ipv46: $parameters.lb.ipv46
port: $parameters.lb.port
servicetype: $parameters.lb.servicetype
lbmethod: $parameters.lb.lbmethod
上記の例では、components セクションで定義されているすべてのプロパティの値が $parameters.lb オブジェクトから取得されていることに注目してください。これらは単一のソースから取得されていますが、プロパティはStyleBook内で再度定義されています。さらに、lbvserverの構成に関連する新しいサブパラメーターが $parameters.lb オブジェクトに追加された場合、新しいサブパラメーターに対応する新しいプロパティを追加するために lb-comp コンポーネントを更新する必要があります。
プロパティの再定義を避け、properties セクションに明示的にリストすることなくコンポーネントのすべての関連プロパティを取得するために、properties-default-sources 構成要素を使用できます。上記の例は次のように記述できます。
parameters:
-
name: lb
type: ns::lbvserver
components:
-
name: lb-comp
type: ns::lbvserver
properties-default-sources:
- $parameters.lb
上記の例では、properties-default-sources 構成要素を使用することで、コンポーネント定義のサイズが削減され、コンポーネントを簡潔に定義できるようになります。さらに、コンポーネントのプロパティのソースが変更されるたびに、その変更が自動的に反映されます。たとえば、新しいプロパティ、例えば「persistencetype」が $parameters.lb オブジェクトに追加された場合、persistencetype はlbvserverのプロパティであるため、このプロパティはデフォルトで lb-comp の構成に追加されます。したがって、properties-default-sources 構成要素は、コンポーネントのプロパティのソースで発生する変更を心配することなく、コンポーネントを定義するための動的なインターフェースを提供します。