Application Delivery Management

Properties-default-sources コンストラクト

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
<!--NeedCopy-->

上記の例では、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
<!--NeedCopy-->

上記の例では、properties-default-sources コンストラクトを使用することで、コンポーネント定義のサイズが削減され、コンポーネントを簡潔に定義できるようになります。さらに、コンポーネントのプロパティのソースが変更されるたびに、その変更が自動的に反映されます。たとえば、$parameters.lb オブジェクトに「persistencetype」という新しいプロパティが追加された場合、persistencetypelbvserver のプロパティであるため、このプロパティはデフォルトで lb-comp の設定に追加されます。したがって、properties-default-sources コンストラクトは、コンポーネントのプロパティのソースで発生する変更を気にすることなく、コンポーネントを定義するための動的なインターフェースを提供します。

コンポーネントのプロパティの計算

このセクションでは、properties-default-sources コンストラクトがコンポーネントで使用された場合に、プロパティがどのように取得されるかについて説明します。まず、StyleBooksコンパイラは、そのタイプ(上記の例では lbvserver)に基づいてコンポーネントのプロパティのリストを識別します。次に、コンパイラは、定義された順序(コンポーネントの properties-default-sources セクション内)で複数のソースからこれらのプロパティを取得します。プロパティが複数のソースに存在する場合、最後のソースに現れるプロパティが他のプロパティよりも優先されます。最後に、properties-default-sources コンストラクトを使用して取得されたプロパティは、コンポーネントの properties セクションで上書きできます。コンポーネントセクションの定義には、少なくとも properties-default-sources セクションまたは properties セクションのいずれかが必要です。両方を持つことも可能です。

Properties-default-sources コンストラクト