この記事は機械翻訳されています.免責事項
プロパティ-デフォルトソース構成
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オブジェクトから取得されていることに注目してください。これらのプロパティは1つのソースから取得されますが、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構造を使用することでコンポーネント定義のサイズが小さくなり、そのためにコンポーネントを簡潔に定義できています。さらに、コンポーネントのプロパティのソースが変更されるたびに、変更内容が自動的に反映されます。たとえば、「persistesetype」という名前の新しいプロパティが$parameters.lbオブジェクトに追加された場合、persistencetypeはlbvserverのプロパティであるため、デフォルトでlb-compの構成に追加されます。このように、properties-default-sources構造は、コンポーネントのプロパティのソースに対して行われる変更を気にすることなくコンポーネントを定義できる動的なインターフェイスを提供します。
コンポーネントのプロパティの計算
このセクションでは、コンポーネントでproperties-default-sources構造を使用した場合にプロパティがどのように取得されるかについて説明します。はじめに、StyleBooksコンパイラがコンポーネントの種類(上の例ではlbvserver)に基づいてコンポーネントのプロパティの一覧を識別します。次に、コンパイラはこれらのプロパティを複数のソースから(コンポーネントのproperties-default-sourcesセクションに )定義されている順に取得します。プロパティが複数のソースに存在する場合は、最後のソースに出現するプロパティがほかのプロパティより優先されます。最後に、properties-default-sources構造を使用して取得されたプロパティは、コンポーネントのpropertiesセクションで上書きすることができます。componentセクションの定義は、少なくともproperties-default-sourcesセクションまたはpropertiesセクションを持つ必要があることに気付くことが重要です。両方のセクションを持つこともできます。