Appearance
Cloud Native Adapter Module, Package
Cloud Native Adapterは、CUE言語のパッケージ仕様を活用して、他ファイルから参照できます。具体的には、QVS ConfigやCloud Native Adapterから、他のCloud Native Adapterを利用する際に、パッケージを指定してインポートして利用します。 本章では、モジュール、パッケージ仕様について述べます。詳細はCUE言語のパッケージ仕様を参照してください。
Cloud Native Adapter Package
CUE言語では、パッケージ機能を利用するためにモジュールを定義する必要があります。以下のように、cue.mod
ディレクトリ配下のmodule.cue
ファイルにモジュールパスを宣言します。
bash
. # Repository root
└── cue.mod
└── module.cue
module.cue
ファイルでは、以下のようにホスト名を含んだ形式でモジュールパスを宣言します。ここでは、Gitリポジトリ名を使うこと推奨します。
module: "${hostName}/${path}"
CUEパッケージを利用する際に宣言するインポートパスは、以下のように、モジュールパスとパッケージパスを結合した形で表現されます。
cue
${modulePath}/${packagePath}
パッケージパスは、CUEファイルを置くディレクトリから決定されます。${dir0}/${dir1}
というディレクトリがあった場合、パッケージパスは${dir0}/${dir1}
となります。このとき、パッケージパスの最後の要素、この例では${dir1}
が、パッケージ名となります。パッケージに所属するCUEファイルには、そのパッケージ名をpackage
句で宣言します。例えば、${dir0}/${dir1}/main.cue
には、package ${dir1}
という宣言をファイルの先頭に記述します。
なお、ディレクトリ名とは異なる文字列をpackage
宣言をすることで、ファイル単位でサブパッケージを用意することも可能です。この場合、サブパッケージのインポートパスは${modulePath}/${packagePath}:${subPackageName}
となります。 例えば、foo/bar/sub.cue
というファイルがあり、sub.cue
をpackage sub
という形で宣言した場合、パッケージ名bar
の下にサブパッケージsub
を作成したことになり、インポートパスは${modulePath}/foo/bar:sub
となります。
パッケージの利用
QVS ConfigのdesignPatterns
宣言で指定するCloud Native Adapterは、上記で解説したインポートパスを指定します。QVS Configの詳細は、仕様を参照してください。
yaml
designPatterns:
- pattern: github.com/qmonus/foo/bar // barパッケージのインポートパス
- pattern: github.com/qmonus/foo/bar:sub // サブパッケージsubのインポート
Cloud Native Adapterから他のパッケージに所属するCloud Native Adapterを利用する場合、CUE言語のimport
宣言を利用してパッケージをインポートし、利用したい構造体/オブジェクトを参照します。
以下に、Cloud Native Adapterから他パッケージのCloud Native Adapterをcompositeする場合のインポート例を挙げます。
cue
import (
"github.com/qmonus/foo/bar" // barパッケージのインポートパス
)
DesignPattern: {
composite: [
{
pattern: bar.DesignPattern // barパッケージのDesignPatternを利用
}
]
}