はじめに
NSO 6.0より、ncs-max-version / required-package/max-version が導入されました。
NSOで使用するサービスパッケージなどは、基本的には NSO の API を使用します。NSO の新規バージョンで何らかの変更があり、それが広報互換性がない場合 (API CHANGE) は、既存のパッケージをそのまま使用することが出来なくなります。そういった NSO 側の変更を確認した場合に、パッケージ側で使用できるNSOバージョンの最大値を ncs-max-version へ設定することで、誤って使用できない組み合わせをデプロイすることを防ぐことが出来ます。
また、実装したい機能を別のパッケージとして分けて開発を行っている場合などに、特定のパッケージが別のパッケージに依存することがあります。多くのパッケージの共通パッケージなど、依存されるパッケージで後方互換性がないような変更を行う場合、依存するパッケージ側で共通パッケージの最大バージョンを指定することで、誤ってロードすることを防ぐことが出来ます。
package-meta-data.xml
NSOに読み込む各種パッケージのメタデータは、package-meta-data.xml へ記述します。
package-meta-data.xml の例
<ncs-package xmlns="http://tail-f.com/ns/ncs-packages">
<name>my-package</name>
<package-version>1.0</package-version>
<ncs-min-version>5.7</ncs-min-version>
<ncs-max-version>5.8</ncs-max-version>
<required-package>
<name>my-package-dependency</name>
<min-version>1.0</min-version>
<max-version>1.2</max-version>
</required-package>
</ncs-package>
この例では、このパッケージを動作させるにはNSO 5.7-5.8 が必要で、また my-package-dependency の 1.0-1.2 が必要です。NSO 6.0 や、my-package-dependency 1.3 と共にロードが出来ないため、誤った動作をさせることがなくなりますし、パッケージ管理の上でも有用な情報となります。