概要
前回 ls コマンドをコードから実行しました
今回は ls の追加として inspect を実装します
inspect は docker のエンドポイントを取得するためのコマンドです
ls で取得した vch を for ループで回して各 vch のエンドポイントを取得してみます
環境
- Ubuntu 16.04
- golang 1.8.1
- vic 0.9.0
inspect のように vch からエンドポイントを取得するコード
- vim my_vic_ls.go
github.com/docker/docker/opts
上記を import に追加します
for _, vch := range vchs {
c, err := executor.GetVCHConfig(vch)
if err != nil {
return err
}
cip := c.ExecutorConfig.Networks["client"].Assigned.IP
fmt.Println(cip)
pip := c.ExecutorConfig.Networks["public"].Assigned.IP
fmt.Println(pip)
if !c.HostCertificate.IsNil() {
fmt.Println(opts.DefaultTLSHTTPPort)
} else {
fmt.Println(opts.DefaultHTTPPort)
}
if c.IsCreating() {
fmt.Println("ng")
} else {
fmt.Println("ok")
}
}
これを Run メソッドの executor.SearchVCHs
の後に追加すれば OK です
vch の config 情報を executor.GetVCHConfig
で取得できるのでその config に対して c.ExecutorConfig.Networks["client"].Assigned.IP
でエンドポイントを取得します
Networks はスライスになっているのでネットワーク名を指定することで必要な IP アドレスを取得できます
普通は client or public が docker のエンドポイント用の IP アドレスになっているのでどちらかを取得すれば OK かなと思います
また、c.HostCertificate
を判定することで vch のエンドポイントが ssl 用のポートかそうでないかを表示してあげます
vch が作成できたかどうかは IsCreating
というメソッドがあるのでこれで判定します
最後に
inspect で取得できるエンドポイントの情報をコードから取得してみました
ls のコードに追加するだけで inspect の情報も取得できるようにしました
0 件のコメント:
コメントを投稿