Red HatでOpenShiftのサポートをしているid:nekopです。OpenShift 全部俺 Advent Calendar 2018 - Qiitaの13日目のエントリです。
oc get event -w
でAbsolute timestampを表示するというのを情報取得のときに利用していたんですが、昨日書いた通り3.11ではoc get event -w
はAbsolute timestamp表示ではなくなってしまったので別の手段を用意する必要がでてきました。
custom-columns
オプションを利用することで表示をカスタマイズすることができるので、そちらを利用しましょう。元のカラム表示定義はこのへんを参照します。
コマンドを組み立てるとこうなりました。
$ oc get event -o custom-columns="LAST SEEN:{lastTimestamp},FIRST SEEN:{firstTimestamp},COUNT:{count},NAME:{metadata.name},KIND:{involvedObject.kind},SUBOBJECT:{involvedObject.fieldPath},TYPE:{type},REASON:{reason},SOURCE:{source.component},MESSAGE:{message}" LAST SEEN FIRST SEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE 2018-12-20T06:35:33Z 2018-12-20T06:35:33Z 1 sleep-2-dc4vs.1571f701b183e805 Pod spec.containers{sleep} Normal Started kubelet Started container
はい、長いですね。-o custom-columns-file
というオプションがあるので恐らくこちらを使うのが正解でしょう。
$ cat <<EOF> abs-event.txt "LAST SEEN:{lastTimestamp},FIRST SEEN:{firstTimestamp},COUNT:{count},NAME:{metadata.name},KIND:{involvedObject.kind},SUBOBJECT:{involvedObject.fieldPath},TYPE:{type},REASON:{reason},SOURCE:{source.component},MESSAGE:{message}" EOF $ oc get event -o custom-columns-file=abs-event.txt error: invalid template, missing spec line. Expected format is one line of space separated headers, one line of space separated column specs.
なんでやねん、って感じですね。custom-columns
とcustom-columns-file
で記述フォーマットが異なるという仕様のようです。
$ cat <<EOF> abs-event2.txt "LAST SEEN" "FIRST SEEN" "COUNT" "NAME" "KIND" "SUBOBJECT" "TYPE" "REASON" "SOURCE" "MESSAGE" {lastTimestamp} {firstTimestamp} {count} {metadata.name} {involvedObject.kind} {involvedObject.fieldPath} {type} {reason} {source.component} {message} EOF $ oc get event -o custom-columns-file=abs-event2.txt error: number of headers (12) and field specifications (10) don't match
スペース区切りの仕様がクオートしてもダメっぽいですね。バックスラッシュでエスケープしても同じです。通常のヘッダにスペース入ってるんだけどこっちでの指定が困難というのはどういうことでしょう。
$ cat <<EOF> abs-event3.txt LAST_SEEN FIRST_SEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE {lastTimestamp} {firstTimestamp} {count} {metadata.name} {involvedObject.kind} {involvedObject.fieldPath} {type} {reason} {source.component} {message} EOF $ oc get event -o custom-columns-file=abs-event3.txt LAST_SEEN FIRST_SEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE 2018-12-20T06:35:33Z 2018-12-20T06:35:33Z 1 sleep-2-dc4vs.1571f701b183e805 Pod spec.containers{sleep} Normal Started kubelet Started container
アンダーバーにすれば受け付けてくれました。
この用途では、custom-columns-file
を使うより、custom-columns
を使ってbashでファイルからオプション渡す、くらいのほうがバランスが良さそうです。
$ cat <<EOF> abs-event.txt "LAST SEEN:{lastTimestamp},FIRST SEEN:{firstTimestamp},COUNT:{count},NAME:{metadata.name},KIND:{involvedObject.kind},SUBOBJECT:{involvedObject.fieldPath},TYPE:{type},REASON:{reason},SOURCE:{source.component},MESSAGE:{message}" EOF $ oc get event -o custom-columns=$(cat abs-event1.txt)