2016-04-11 8 views
0

ApacheのブルックリンWebインターフェイスでは、sytsemマネージャのコンテンツを表示したいと考えています。内容が長すぎて単純なセンサ値として扱うことができません。Webコンソールへのタスクの投稿実行(管理)コンテキスト

私たちの考えは、タスクを作成し、その内容をタスクの出力ストリームに書き込んだ後、マネージャに以下のようなRESTベースのURLを提供することでした: /v1/activities/{task}/stream/stdoutもちろん、いくつかの素晴らしいテキストでマスクのリンク)

ストリームとタスクは次のように作成されます。

LOG.info("{} Creating Activity for ClusterReport Feed", this); 
activity = Tasks.builder(). 
    displayName("clusterReportFeed"). 
    description("Output for the Cluster Report Feed"). 
    body(new Runnable() { 
     @Override 
     public void run() { 
      //DO NOTHING 
     } 
    }). 
    parallel(true). 
    build(); 

LOG.info("{} Task Created with Id: " + activity.getId(), this); 
Entities.submit(server, activity).getUnchecked(); 

タスクが作成されているように見えるとinterractionは完全に正常に動作します。 しかし、用意されたURLを使用してブラウザからタスク出力ストリームにアクセスする場合、タスクが存在しないというエラーが表示されます。

私たちの考えは、適切な管理/実行コンテキストにないことです。 Webページは、エンティティとそのセンサーと比較して、他のコンテキストで実行されています。タスクをWebコンソールのコンテキストでも表示できるようにするにはどうすればよいでしょうか。

コンテンツをファイルに書き込んだり、Jetty(brooklyns Webサーバー)からダウンロードすることは可能ですか?それはずっと簡単な方法でしょう。

答えて

0

ブルックリンの多くのタスクはデフォルトで一時的です。つまり、完了した直後に削除されます(エフェクタ呼び出しはデフォルトで非一時的です)。

あなたは、タスクビルダーの使用中に以下のコードを使用して、非一時的なものとして、あなたのタスクをマークすることができます

.tag(BrooklynTaskTags.NON_TRANSIENT_TASK_TAG) 

しかし、タスクがイン保たれている(ブルックリンバージョン0.9.0のような)ことに注意してくださいメモリはsoft referencesです。これは、タスクの標準出力が将来、そのメモリが他のメモリ内オブジェクトに必要なときに失われる可能性があることを意味します。

あなたのユースケースでは、これをおそらくエフェクタの結果として持つのは理にかなっていますか?

または、代わりにS3などのオブジェクトストアに書き込むことはできますか? S3アプローチは私にとっては最高のようだ。

ファイルに書き込む場合、ブルックリン高可用性で使用する場合は注意が必要です。共有ボリュームに書き込めますか?

ファイルに書き込む場合は、ユーザーがそのファイルの内容にアクセスできるようにWeb拡張機能を提供する必要があります。ブルックリン0.9.0以降、BrooklynLauncherBrooklynWebServerを呼び出します)を呼び出すときに、コード内に独自のWARを追加できます。