はじめに
本記事は、NSO 5.x の multi-NED environment にてサービス / API テンプレート開発時に、パッケージがサポートする NED のリストを設定する方法について紹介します。事前に supported-ned-id リストを定義しておくことで、runtime のエラーを回避または最小限にすることを目指します。
パッケージがサポートするNEDのリストを定義する
package-meta-data.xml を以下のように編集し、パッケージの対象のNEDを設定します
NSO 5.4 -> 5.7
...
<ncs-min-version>5.5</ncs-min-version>
<supported-ned-id>my-router-1.0</supported-ned-id>
...
NSO 5.8 では引数に REGEX を使用できます
...
<ncs-min-version>5.5</ncs-min-version>
<supported-ned-id>my-router-1.0</supported-ned-id>
<supported-ned-id-match>my-router-1\.\d+</supported-ned-id-match>
<supported-ned-id-match>my-router-2\.\d+</supported-ned-id-match>
...
パッケージがサポートする NED を明示的に定義しておく利点
パッケージがサポートする NED のリストを事前に定義しておく最大の利点は、開発時には想定していなかった NED のデータモデル変更等にパッケージが対応していないために起こる得る runtime エラーを避けることです。supported-ned-id (または<?if-ned-id?> ) で定義した NED 以外の load された NED はパッケージからは見えません。もしこの設定をしていない場合、すべての load された NED が対象となり得ます。
なお、パッケージで定義した supported-ned-id リストの NED がひとつも load されていない環境では、パッケージは "relaxed loading mode" に切り替わります。そのような状況では 全てのエラー検知できないことも考えられるため注意が必要です。サポートする NED が load されていて、loading mode が "strict" になっていることを確認してください。packages / package list の template-loading-mode から確認できます。パッケージ開発時やパッケージを別の環境にもっていく際は以上の点をご留意ください。
参考情報
NSO Development Guide, chapter Templates, section "Service and API Templates in multi-NED environment"