Application Delivery Management

ネストされた繰り返し

repeat構造をネストにして使用することで、コンポーネントの定義に応じて各コンポーネントに複数のrepeat構造を含めることができます。2レベルのネストになったrepeat構造を考えます。外側のリスト(最初のrepeat-list)の要素ごとに、内側のリスト(2番目のrepeat-list)の要素すべてに対してrepeatリストを作成できます。StyleBookコンパイラでは、ネストになったrepeatは最大で3つまでサポートされます。各repeatレベルには、repeat-item属性およびrepeat-index属性を関連付けます。repeat-item属性とrepeat-index属性はともにオプションです。また、repeatごとにrepeat-conditionを指定することもできます。


parameters:
  -
      name: vips
      type: ipaddress[]
  -
      name: vip-ports
      type: tcp-port[]
components:
  -
      name: lbvservers-comp  
      type: ns::lbvserver
      repeat:
         repeat-list: $parameters.vips
         repeat-item: ip
         repeat:
              repeat-list: $parameters.vip-ports
              repeat-item: port
      properties:
         name: str("lb-") + str($ip) + '-' + str($port)
         servicetype: HTTP
         ipv46: $ip
         port: $port
<!--NeedCopy-->

上記の例では、$parameters.vipsの項目ごとに、$parameters.vip-portsの項目すべてに対して反復処理を行います。つまり、$parameters.vipsで指定したipaddressごとに、$parameters.vip-portsで指定したすべてのポートに対してlbvserver構成オブジェクトを作成します。propertiesセクションでは、IPアドレスとポートの組み合わせにプレフィックス「lb」を付けたオブジェクト名を定義しています。このため、反復処理のたびに、$ipと$portの結合により一意のIPアドレスとポート番号の組み合わせが定義されます。

repeat-item属性を指定していない場合、コンパイラではこの属性のデフォルト値が生成されます。repeat-itemのデフォルト値は、repeatレベルごとにそれぞれ$repeat-item、$repeat-item-1、$repeat-item-2となります。同様に、repeat-index属性を指定していない場合、コンパイラではこの属性のデフォルト値が生成されます。repeat-indexのデフォルト値は、repeatレベルごとにそれぞれ$repeat-index、$repeat-index-1、$repeat-index-2となります。

以下の例では、ネストになったrepeatオブジェクトでrepeat-item属性およびrepeat-index属性を指定していない場合の命名規則を示します。


components:
-
     name: lbvservers-comp  
     type: ns::lbvserver
     repeat:
         repeat-list: $parameters.vips
         repeat:
            repeat-list: $parameters.vip-ports
     properties:
        name: str("lb-") + str($repeat-item) + '-' + str($repeat-item-1)
        servicetype: HTTP
        ipv46: $repeat-item
        port: $repeat-item-1
<!--NeedCopy-->
ネストされた繰り返し

この記事の概要