ポリシー拡張
ポリシー拡張機能を使用すると、組み込みポリシータイプの拡張関数を記述できます。拡張機能は、組み込み関数と同様にポリシー表現で使用できます。これらは、対応するポリシー表現が評価されるときに実行されます。この機能は次のような場合に便利です。
- 既存のポリシーにカスタマイズされた機能を追加します。
- 複雑な顧客要件に対応する論理構造の実装。
ポリシー拡張機能は、ユーザーが組み込みのポリシータイプ用の拡張関数を記述できるようにすることで、これらの制限に対処します。その後、組み込み関数と同様に、拡張機能をポリシー表現で使用できます。これらは、対応するポリシー表現が評価されるときに実行されます。
次の表は、エクステンションを書くときに使用できるポリシータイプとそれに関連するマッピングを示しています。
ポリシーの種類 | マップポリシータイプ | 出力 |
---|---|---|
TEXT_T | NSTEXT | 文字列 |
BOOL_AT | NSBOOL | ブーリアン型 |
NUM_AT | NSNUM | 数値 (倍精度浮動小数点) |
DOUBLE_AT | NSDOUBLE | 数値 (倍精度浮動小数点) |
ポリシー拡張を使用するための前提条件
インポートされた関数は、既存のポリシー標準に準拠している必要があります。したがって:
- 関数名は文字で始まらなければならず、数字やアンダースコアを含むことができます。
- 関数名は、NetScalerポリシーによって大文字と小文字が区別されないように扱われます。
- 拡張言語が複数の値を返す場合でも、関数は単一の値を返さなければなりません。
- 引数の数が可変の関数はサポートされていません。
ポリシーの拡張はどのように機能しますか?
NetScalerアプライアンスの既存のポリシーは、インタープリターを使用して機能を評価し、ポリシー拡張ファイルにインポートされます。ユーザーがポリシー拡張ファイルに新しい関数をインポートすると、
- 拡張ファイルの構文やその他の条件が検証されます。
- 検証に失敗すると、エラーがユーザーに報告されます。
- 検証が成功すると、拡張ファイルがNetScalerアプライアンスにインポートされ、組み込みのポリシー機能と同様に、その内容をポリシー表現で使用できます。
-
実行時にポリシー表現の評価でエラーが返された場合、undef イベントとして報告され、関連するエラーカウンタがインクリメントされます。
注: ポリシー未定義イベントが発生し、ポリシー規則に 1 つ以上のポリシー拡張機能が含まれている場合、
show ns extension <name>
コマンドはそれらのポリシー拡張に適用されたときに undef ヒットを表示します。拡張関数が中止されると、中止カウンタの値が増えます。 -
ポリシー表現の評価が成功した場合、式全体が評価されるか、エラーにより中止されるまで、式の評価が再開されます。
-
拡張関数の実行に時間がかかりすぎると、その拡張関数は中止され、その拡張関数に関連するエラーカウンタがインクリメントされます。拡張機能はサンドボックス化されているため、次のことが防止されます。
- NetScalerアプライアンスのCPU使用率が高すぎる。
- NetScalerアプライアンスのメモリ使用量が多すぎる。
- 有害な組み込みライブラリまたはサードパーティのライブラリまたはバイナリの使用。
- NetScalerアプライアンスの再起動の原因となる可能性のある長時間実行のスクリプト。