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」でデフォルト値が定義されている場合、そのデフォルト値を取る可能性があることに注意してください。

オプションプロパティ