Application Delivery Management

組み込み関数

組み込み関数はStyleBookの式で使用されます。

たとえば、組み込み関数str()を使用して、数値を文字列に変換できます。

str($parameters.order)

または、組み込み関数int()を使用して、文字列を整数に変換することもできます。

int($parameters.priority)

以下は、StyleBookの式でサポートされる組み込み関数とその使用例の一覧です。

str()

str()関数は、入力引数を文字列値に変換します。

許可される引数の種類は次のとおりです。

  • string
  • number
  • TCP-port
  • boolean
  • IP address

  • "set-" + str(10)関数は"set-10"を返します。
  • str(10)関数は10を返します。
  • str(1.1.1.1)関数は1.1.1.1を返します。
  • str(T rue)関数は"T rue"を返します。
  • str(ADM)関数は"mas"を返します。

int()

このint()関数は、文字列、数値、IP アドレス、またはtcpportを引数として取り、整数を返します。

  • int("10")関数は10を返します。
  • int(10)関数は10を返します。
  • int(ip('0.0.4.1'))関数は1025を返します。

bool()

bool()関数は、引数として任意の型を取ります。引数の値がfalse、空の場合、または存在しない場合、この関数はfalseを返します。

それ以外の場合は、trueを返します。

  • bool(true)関数はtrueを返します。
  • bool(false)関数はfalseを返します。
  • bool($parameters.a)関数は、 $parameters.afalse 、空、または存在しない場合にfalseを返します。

len()

len()関数は、引数として文字列またはリストを受け取り、文字列内の文字数またはリスト内の項目数を返します。

例 1

次のように置換を定義した場合、

items: ["123", "abc", "xyz"]

len($substitutions.items)関数は 3を返します

例 2

len("NetScaler ADM")関数は10を返します。

サンプル 3

$parameters.vipsに値['1.1.1.1', '1.1.1.2', '1.1.1.3']がある場合、len($parameters.vips)関数は3を返します。

min()

min()関数は、 リストまたは一連の数値またはtcp-portsを引数として受け取り、最小の項目を返します。

一連の番号/tcp ポートを使用する例

  • min(80, 100, 1000)関数は80を返します。
  • min(-20, 100, 400)関数は-20を返します。
  • min(-80, -20, -10)関数は-80を返します。
  • min(0, 100, -400)関数は-400を返します。

番号/tcp-ポートのリストを持つ例

  • サポート$parameters.portsは、 tcp-ports のリストであり、次の値を持ちます: [80, 81, 8080].

    min($parameters.ports)関数は80を返します。

max()

max()関数は、 引数として、リストまたは一連の数値またはtcp-portsのいずれかを取って、最大の項目を返します。

一連の番号/tcp ポートを使用する例

  • max(80, 100, 1000)関数は1000を返します。
  • max(-20, 100, 400)関数は400を返します。
  • max(-80, -20, -10)関数は-10を返します。
  • max(0, 100, -400)関数は100を返します。

番号/tcp-ポートのリストを持つ例

  • サポート$parameters.portstcp-portsのリストであり、次の値があります: [80, 81, 8080]

    max($parameters.ports)関数は8080を返します。

bin()

bin()関数は、引数として数値を取り、バイナリ形式で数値を表す文字列を返します。

式の例:

bin(100)関数は0b1100100を返します。

oct()

oct()関数は、引数として数値を取り、8 進形式で数値を表す文字列を返します。

式の例:

oct(100)関数は0144を返します。

hex()

hex()関数は、引数として数値を取り、16 進数形式で数値を表す小文字の文字列を返します。

式の例:

hex(100)関数は0x64を返します。

lower()

lower()関数は、引数として文字列を受け取り、小文字で同じ文字列を返します。

lower("ADM")関数はadmを返します。

upper()

upper()関数は、引数として文字列を受け取り、大文字で同じ文字列を返します。

upper("NetScaler ADM")関数はNetScaler ADMを返します。

sum()

このsum()関数は、数値のリストまたはtcpportsを引数として取り、リスト内の数値の合計を返します。

例 1

置換を次のように定義した場合: 置換:

list-of-numbers = [11, 22, 55]

sum($substitutions.list-of-numbers)関数は88を返します。

例 2

$parameters.ports[80, 81, 82]の場合 、sum($parameters.ports)関数は243を返します 。

pow()

pow()関数は、引数として2つの数字を取り、2番目の1の累乗に上げられた最初の引数を表す数値を返します。

pow(3,2)関数は9を返します。

ip()

ip()関数は、引数として整数、文字列、または IP アドレスを受け取り、入力値に基づいて IP アドレスを返します。

  • ip 関数で IP アドレスを指定します。

    ip(3.1.1.1)関数は3.1.1.1を返します。

  • ip 関数に文字列を指定します。

    ip('2.1.1.1')関数は 2.1.1.1を返します

  • ip 関数に整数を指定します。

    • ip(12)関数は0.0.0.12を返します。

    • ip 関数で文字列として整数を指定すると、入力と同等の IP アドレスを返します。

      ip('1025')関数は0.0.4.1を返します。

    この関数は、整数の加算および減算操作もサポートし、結果の IP アドレスを返します。

    • 追記: ip(1025) + ip(12)関数は0.0.4.13を返します。

    • 減算: ip('1025') - ip(12)関数は0.0.3.245を返します。

    • 加算と減算を組み合わせる: ip('1.1.1.1') + ip('1.1.1.1') – ip(2)2.2.2.0を返します。

base64.encode()

base64.encode() この関数は、文字列引数を受け取り、base64 でエンコードされた文字列を返します。

base64.encode("abcd")関数はYWJjZA==を返します。

base64.decode()

base64.decode関数は、base64 でエンコードされた文字列を引数として取り、デコードされた文字列を返します。

base64.decode("YWJjZA==")関数はabcdを返します。

exists()

exists()関数は、任意の型の引数を受け取り、ブール値を返します。入力に値がある場合戻り値はTrueです。戻り値は、入力引数が値を持たない場合 (つまり、値がない場合)False です。

$parameters.monitor はオプションのパラメータであるとします。構成パックの作成時にこのパラメーターに値を指定すると、「存在する」 という関数が($parameters.monitor)返さTrueれます。

それ以外の場合は、Falseを返します。

filter()

filter()関数は 2 つの引数を取ります。

引数1:1つの引数を受け取ってブーリアン型の値を返す置換関数です。

引数2:一覧です。

この関数は、最初の引数の置換関数に渡されたときに各要素がTrueに評価される元のリストのサブセットを返します。

次のような置換関数を考えてみましょう。

Substitutions:

x(a): $a != 81

この関数は、入力値が81と等しくない場合にTrueを返します。それ以外の場合は、Falseを返します。

$parameters.ports[81, 80, 81, 89]と想定します。

filter($substitutions.x, $parameters.ports)は、リストからすべての81のオカレンスを削除して[80, 89]を返します 。

if-then-else()

if-then-else()関数は 3つの引数を取ります。

引数1:ブール式

引数2:任意の式

引数3:任意の式(オプション)

引数 1 の式がTrueと評価された場合、関数は引数 2 として指定された式の値を返します。

それ以外の場合は、引数3が指定されている場合、この関数は引数3の式の値を返します。

引数 3 が指定されていない場合、関数はnoを返します。

例 1

$parameters.servicetypeが値HTTPを持っている場合、if-then-else($parameters.servicetype == HTTP, 80, 443)関数は80を返します 。それ以外の場合、関数は443を返します。

例 2

if-then-else($parameters.servicetype == HTTP, $parameters.hport, $parameters.sport) 関数は、$parameters.servicetypeHTTP値を持っている場合、$parameters.hportの値を返します 。

それ以外の場合、関数は$parameters.sportの値を返します。

サンプル 3

$parameters.servicetypeが値HTTPを持っている場合、if-then-else($parameters.servicetype == HTTP, 80)80を返します 。

それ以外の場合、関数は値を返しません。

join()

join()関数は、次の 2 つの引数を取ります。

引数 1: 数値、tcp-ports、文字列、または IP アドレスのリスト

引数2:区切り文字列(オプション)

この関数は、引数 1 として指定されたリストの要素を文字列に結合します。各要素は、引数 2 として指定された区切り文字列で区切られます。引数 2 が指定されていない場合、リスト内の要素は 1 つの文字列として結合されます。

  • $parameters.ports[81, 82, 83]です。

    • デリミタ引数付き:

      join($parameters.ports, '-')関数は81-82-83を返します。

    • デリミタ引数なし:

      join($parameters.ports)関数は818283を返します。

split()

split()関数は、指定された区切り文字に応じて、複数のリストに入力文字列を分割します。セパレータを指定しなかったり、空白 ('') を指定した場合、この関数はスペースをセパレータとみなし、文字列をリストに分割します。

例:

  • split('Example_string_split', 's')関数は['Example_','tring_','plit']を返します。

  • split('Example string split')関数は['Example','string','split']を返します。

  • split('Example string split', '')関数は['Example','string','split']を返します。

  • split('Example string')関数は['Example','string']を返します。

    この関数は、連続空間を 1 つのスペースとみなします。

map()

map()関数は 2 つの引数を取ります。

引数1:任意の関数

引数2:要素の一覧

この関数は、リスト内の各要素が引数 2の対応する要素に関数map() (引数 1) を適用した結果であるリストを返します。

引数1で許可される関数は次のとおりです。

  • 1つの引数を取る組み込み関数:

    base64.encode, base64.decode, bin, bool, exists, hex, int, ip, len, lower, upper, oct, quotewrap, str, trim, upper, url.encode, url.decode

  • 1つ以上の引数を受け取る置換関数。

$parameters.numsが[81, 82, 83]だと仮定します。

  • Map using a built-in function, str

    map(str, $parameters.nums)関数は ["81", "82", "83"]を返します

    map関数の結果は文字列の一覧であり、文字列の各要素は、入力した一覧($parameters.nums)の対応する要素にstr関数を適用して処理されています。

  • 置換関数を使用したmap

    • Substitutions:

      add-10(port): $port + 10

    • 表現:

      map($substitutions.add-10, $parameters.nums)関数は、数値のリストを返します。 [ 91, 92, 93 ]

このマップ関数の結果は、数値のリストです。各要素は、入力リスト($parameters.nums)内の対応する要素に置換関数$substitutions.add-10を適用することによって計算されます。

quotewrap()

quotewrap()関数は、引数として文字列を受け取り、入力値の前後に二重引用符を追加した後に文字列を返します。

quotewrap("ADM")関数は "mas"を返します

replace()

replace()関数は、次の 3 つの引数を取ります。

引数 1: a string または以下の組み込み型のリスト:

  • string
  • number
  • ipaddress
  • tcp-port
  • boolean

引数 2: 単一の値、または引数 1 で指定された型と一致する型を持つ値のリスト

引数 3: 引数 1 で指定されたものと同じ型の単一値 (オプション)

replace()関数は、引数 2 のすべての出現箇所を引数 1 の引数 3 に置き換えます。

引数 3 が指定されていない場合、引数 2 のすべての出現箇所が引数 1 から削除されます。

  • replace('abcdef', 'def', 'xyz')関数がabcxyzを戻します。

    defのすべてのオカレンスはxyzに置き換えられます。

  • replace('abcdefabc', 'def')abcabcを返します。

    引数 3 がないため、defは結果の文字列から削除されます。

  • replace('An#example@to%replace!characters', ['@', '#', '!', '%'], '_')関数がAn_example_to_replace_charactersを戻します。

    出力文字列には、 ['@', '#', '!', '%']で指定した文字の代わりにアンダースコア (_) が付きます。

  • replace([10.10.10.1, 10.10.10.2, 10.10.10.3, 10.10.10.4], [10.10.10.2, 10.10.10.4])関数が[10.10.10.1, 10.10.10.3]を戻します。

    引数 3 がないので、10.10.10.210.10.10.4は結果のIPアドレスのリストから削除されます。

  • replace([8080, 8081, 8082, 8083, 8084], 8083, 80)関数が[8080, 8081, 8082, 80, 8084]を戻します。

    8083のすべてのオカレンスは80に置き換えられます。

trim()

trim()関数は、入力文字列から先頭と末尾の空白を取り除いた文字列を返します。

trim(' abc ')関数はabcを返します。

truncate()

truncate()関数は、次の 2 つの引数を取ります。

引数1:文字列

引数2:数字

この関数は、引数 1 の入力文字列を引数 2 で指定された長さに切り捨てた文字列を返します。

truncate('NetScaler ADM', 6)Citrixを返します。

distinct()

distinct()関数は、リスト入力から一意の項目を抽出します。

例: $parameters.input_list['ADM', 'ADC', 'VPX', 'ADC', 'ADM', 'CPX']の場合、distinct($parameters.input_list)関数は['ADM', 'ADC', 'VPX', 'CPX']を返します 。

url.encode()

url.encode()関数は、RFC 3986 に従って ASCII 文字セットを使用して文字が変換される文字列を返します。

url.encode("a/b/c")関数はa%2Fb%2Fcを返します。

url.decode()

url.decode()関数は、URL エンコードされた引数が RFC 3986 に従って通常の文字列にデコードされる文字列を返します。

url.decode("a%2Fb%2Fc")関数はa/b/cを返します。

is-ipv4 ()

is-ipv4()関数は、引数として IP アドレスを受け取り、IP アドレスが IPv4 形式の場合はブール値Trueを返します。

is-ipv4(10.10.10.10)関数は Trueを返します

is-ipv6 ()

is-ipv6()関数は、引数として IP アドレスを受け取り、IP アドレスが IPv6形式の場合はブール値Trueを返します。

is-ipv6(2001:DB8::)関数は Trueを返します

startsWwith ()

startswith()関数は、文字列が指定されたプレフィックスで始まるかどうかを決定します。この関数には、2 つの必須文字列引数が必要です。

startswith(str, sub_str)

この関数は、文字列(str )が部分文字列(sub_str)で始まる ときにTrueを返します。

  • startswith('Citrix', 'Ci')関数はTrueを返します。
  • startswith('Citrix', 'iC')関数は Falseを返します
  • startswith('Citrix', 'Ab')関数は Falseを返します

endswith ()

endswith()関数は、文字列が指定された接尾辞で終わるかどうかを決定します。この関数には、2 つの必須文字列引数が必要です。

endswith(str, sub_str)

この関数は、文字列(str )が部分文字列(sub_str)で終わる ときにTrueを返します。

  • endswith('Citrix', 'ix')関数はTrueを返します。
  • endswith('Citrix', 'Ix')関数はFalseを返します。
  • endswith('Citrix', 'ab')関数はFalseを返します。

() を含む

contains()関数は、文字列に指定された部分文字列が含まれているかどうかを判定します。この関数には、2 つの必須文字列引数が必要です。

contains(str, sub_str)

この関数は、substring (sub_str) が文字列 (str) 内のどこかに含まれている場合に、Trueを返します。

例:

  • contains('Citrix', 'tri')関数はTrueを返します。
  • contains('Citrix', 'Ci')関数はTrueを返します。
  • contains('Citrix', 'ti')関数は Falseを返します

部分文字列 ()

substring() 関数を使用して、文字列から部分文字列を抽出します。

substring(str, start_index, end_index)

この関数には、2 つの必須引数と 1 つのオプションの整数引数が必要です。

  • str (必須)
  • start_index (必須)
  • end_index (オプション)

この関数は、指定されたインデックス位置の間にある文字列 (str) から部分文字列を返します。終了インデックス位置を指定しない場合、関数は開始インデックスから文字列の末尾までの部分文字列を抽出します。

注:

end_indexを指定すると、end_index位置の文字は部分文字列から除外されます。

例:

  • substring('Citrix', 2)関数は trixを返します

  • substring('Citrix', 10)関数は (") を返します

    この例では、無効なstart_index位置があるため、関数は空白の文字列を返します。

  • substring('Citrix', 2, 4)関数は trを返します

    この例では、関数は 2 ~ 4 つのインデックス位置の間の文字を抽出します。

  • substring('Citrix', -3)関数は rixを返します

    文字列の末尾にある文字を抽出する場合は、 start_index 引数に負の値を指定します。

    この例では、関数は、文字列の最後の 3 文字を含む部分文字列を抽出します。

複数 ()

multiple()関数は、次の 2 つの引数を取ります。

引数 1: a numberstringbooleanipaddresstcp-port、またはpassword

引数 2: a number

multiple(argument1, argument2)関数は、引数 1 のコピーを多数含むリストを返します。コピーの数は、引数 2 に渡された数と同じです。

  • multiple(10.10.10.10, 3)関数は[10.10.10.10, 10.10.10.10, 10.10.10.10]を返します。

  • multiple(8080, 4)関数は[8080, 8080, 8080, 8080]を返します。

組み込み関数