AzkabanのCLIツールeboshiを書きました

https://github.com/wyukawa/eboshi

インストール方法と使い方はREADMEを見てください。

名前はサザンのチャコの海岸物語の「烏帽子岩が見え〜てきた、俺の家も近い」から取りました。特に意味は無いです。
最初はAzkabanCliとかそんな感じの名前にしようかと思ったけど、そこまでメジャー感を出すのはどうかと思って変えました。

pythonで実装したツールです。コマンドラインフレームワークであるcliffとHTTPクライアントライブラリであるrequestsを使ってます。
pypiデビューです。gemと同じぐらいの労力でmavenに比べるとだいぶ簡単です。mavenはやったことないけどw

すでに既存ツールとして
https://github.com/mtth/azkaban
があるのですが、イマイチ使い方がぱっとわからなかったので結局自作しました。

今のところ出来ることはAzkabanのジョブファイルのアップロードとスケジュール登録だけです。

作ろうと思ったきっかけはAzkabanのスケジュール実行時の設定を変更するためです。

Azkabanはジョブ失敗時の挙動が3パターンあります。

  • Finish Current Running finishes only the currently running job. It will not start any new jobs.
  • Cancel All immediately kills all jobs and fails the flow.
  • Finish All Possible will keep executing jobs as long as its dependencies are met.

デフォルトがFinish Current Runningです。つまりジョブが失敗した場合、依存関係に無い後続ジョブが実行されません。これはちと困ります。再実行するのが面倒だから。
以前のAzkaban 1だったら依存関係に無いジョブは実行してくれていてつまり、Finish All Possible相当で良かったのになあと思います。
で、手動で実行する場合はこの設定を変更出来る画面があるのですが、スケジュール実行時に変更する方法が無いようでした。

メーリングリストで聞いても返信が無かったです。
https://groups.google.com/forum/#!topic/azkaban-dev/SxN80LqBiDY

で、Azkabanのソースや上記CLIのソースを読んでいたらどうもAPI経由なら変更出来るようなので実装しました。

ちなみにスケジュール関連のAPIはあるのですが、ドキュメントは無いです。

ジョブ実行なども必要に応じて作ろうかと思います。