oozie job control を javascriptでやろうとしたらハマった件

oozieのジョブ管理を Rest API で実行する JS を書いてみた。

まず、oozieとJSが載ってる管理ページが別ドメインと判定されてしまうようで(oozieと管理ページで使ってるポートが違うので)、CORS扱いになる。
CORSは、ヘッダの設定をいろいろかまさないとリクエストが通ってくれない。
今回は、httpd.conf に以下の様な設定をした。

Header append Access-Control-Allow-Origin: *
Header append Access-Control-Allow-Headers: Content-Type
Header append Access-Control-Expose-Headers: oozie-error-message
Header append Access-Control-Allow-Methods: GET,POST,PUT,OPTIONS

rerunしようとしてもputが通らないとか、oozie-error-message を管理ページに表示しようとしても空っぽとか・・・いろいろハマった。

更に、oozieのドキュメントが全然実装と違ったんですけど・・・

http://archive.cloudera.com/cdh4/cdh/4/oozie-3.2.0-cdh4.1.3/WebServicesAPI.html#Re-Runing_a_coordinator_job

これ、嘘っぱちで、

PUT /oozie/v1/job/job-3?action=rerun&type=current&start-time=2009-02-01T00:10Z&end-time=2009-03-01T00:10Z

とか書いてあるが、実際は、

PUT /oozie/v1/job/job-3?action=coord-rerun&type=date&scope=2009-02-01T00:10Z::2009-03-01T00:10Z

みたいな感じにしなきゃダメ。
あと、refresh パラメータもつけたほうがよいかも。