StyleBookの設定

ネストされた繰り返し

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設定オブジェクトを作成します。プロパティセクションでは、IP アドレスとポートの組み合わせのプレフィックスとして「lb」を持つオブジェクトの名前を定義します。したがって、反復ごとに、$ip + $portは IPアドレスとポート番号の一意の組み合わせを定義します。

repeat-item属性が指定されていない場合、コンパイラーはそのデフォルト値を生成します。repeat-item のデフォルト値は 、各繰り返しレベルごとにぞれぞれ$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-->
ネストされた繰り返し

この記事の概要