Application Delivery Management

オプションのプロパティ

コンポーネントのプロパティは、式からその値を取得する場合があります。式はパラメーター参照などの単純式の場合もあれば、より複雑な式の場合もあります。このプロパティ値の設定は、コンポーネントではオプションです。式から実際の値が返される場合にのみプロパティの値を設定し、値が返されない場合はこのプロパティを設定しなくてもかまいません。

たとえば、設定するプロパティの1つが、型をns::lbvserverとするコンポーネントのlbmethod(負荷分散アルゴリズム)であるとします。プロパティlbmethodの値は、次に示すようにユーザーが指定したパラメーター値から取得されます。


components
  -
      name: lbvserver_comp
      type: ns::lbvserver
      properties:
        name: $parameters.lb-appname + "-lb"
        servicetype: $parameters.lb-service-type
        ipv46: $parameters.lb-virtual-ip
        port: 80
        lbmethod: $parameters.lb-advanced.algorithm
<!--NeedCopy-->

ここで、パラメータ lb-advanced.algorithm がオプションのパラメータであることを考えてみましょう。また、オプションであるためにユーザーがこのパラメータの値を指定しない場合、式 $parameters.lb-advanced.algorithm は空白の値に評価されます。そのため、lbmethodプロパティに無効な値が渡されます。このような状況を回避するには、次のようにプロパティ名に「?」のサフィックスを付けて、プロパティにオプションであることを示す注釈を付けることができます。


components
   -
     name: lbvserver_comp
     type: ns::lbvserver
     properties:
       name: $parameters.lb-appname + "-lb"
       servicetype: $parameters.lb-service-type
       ipv46: $parameters.lb-virtual-ip
       port: 80
       lbmethod?: $parameters.lb-advanced.algorithm
<!--NeedCopy-->

「?」を使用すると、右側の式がなしに評価された場合、このプロパティは省略されます。この例では、次のように定義されたコンポーネントと同等になります。


components
  -
    name: lbvserver_comp
    type: ns::lbvserver
    properties:
      name: $parameters.lb-appname + "-lb"
      servicetype: $parameters.lb-service-type
      ipv46: $parameters.lb-virtual-ip
      port: 80
<!--NeedCopy-->

lbmethodはオプションであるため、それを省略しても有効なコンポーネントになります。lbmethodは、「ns::lbvserver」型で定義されている場合、そのデフォルト値を取得する場合があります。

オプションのプロパティ

この記事の概要