Translate

2012年4月27日金曜日

CloudStackソースをEclipse上から眺める


CloudStackはオープンソースなので(Citrix製品もある)、
ソースコードも取得可能である。

自社でパブリックIaaSを提供する際に
顧客側に使ってもらうセルフサービスポータルが
必要なのだが、
CloudStackそのままでは機能が不足している。

例えば課金情報の参照などの機能は
当然用意されていない。

CloudStackのUIを拡張するか、
CloudStackポータルの外にWebアプリを作るか
しかない。

そこでポータルにリンクを貼るにせよ、
CloudStack上のソースを弄って
機能の一つにしてしまうにせよ、
ソースを読める環境をまず作らなくてはならない。

ソースコードは、

github CloudStack


からダウンロード可能である。

gitを使ってリポジトリをチェックアウトしても良いのだけど
proxy環境な私はcorkscrewやらいろいろ面倒なので
上記サイトのzipボタンを押して圧縮ファイル一括ダウンロードした。

圧縮ファイルを展開すると
いくつかディレクトリがならんでいる。
そこで
Eclipseで上記の展開ディレクトリをワークスペースとして開き、
ファイル>インポート>既存プロジェクトをワークスペースへ>次へ
を選択して、ルートディレクトリの選択の右横の参照ボタンを開いて
以下のディレクトリを1つ1つプロジェクトとして登録していく。

・agent
・agent-simulator
・api
・client
・console-proxy
・core
・deps
・ovm
・patches
・scripts
・server
・setup
・test
・tools
・ui
・usage
・utils
・vmware-base

するとほぼすべてのプロジェクトに
赤いビックリマークが並んでしまう。

setupプロジェクトは
setupプロジェクトを右クリックし
ビルドパス>ビルドパスの構成>ライブラリ
を開いてXML関連の外部Jarを追加する。

面倒な人はxercesのjarを全部選択して追加すれば良い。


次にconsole-proxyプロジェクトも右クリックし
ビルドパス>ビルドパスの構成>プロジェクト
から赤マークの付いているconsoleなどを
除去する。

どうも昔のバージョンではあったみたいだが
CloudStack3.0では存在しないので
削除する。

最後にdepsプロジェクトだけ赤バッテンがのこるが、
この中のソースを見ると、
すべての先頭のほうに



 * follows:
 *   Linking this library statically or dynamically with other modules is
 *   making a combined work based on this library. Thus, the terms and
 *   permission to link this library with independent modules to produce an
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


と書かれていた。


ちなみに

"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"を
Google Mapに入れると、
あのEmacsで有名なリチャード・ストールマン率いる
Free Software Foundationを思いっきり指していた。

どうもGPLがらみで1つのワークスペースにできないので
あえてこうしているみたいなので、
ソースの上の箇所をコメントアウトするのはやめておいた。

depsパッケージが不完全でもその他のプロジェクトは大丈夫なので
ほっておいてもよさそうだ。

それに..XenServer関連っぽいし。
Xen使ってないからいいや..



ソースをどこから読むかだけど、
Webアプリをエントリーポイントとして読むには
clientパッケージのWEB-INFにある
web.xmlだろう。

ここにある、各サーブレットになるだろう。

・com.cloud.servlet.CloudStartupServlet
・com.cloud.api.ApiServlet
・com.cloud.servlet.ConsoleProxyServlet
・com.cloud.servlet.RegisterCompleteServlet

これらすべてのServletは
serverプロジェクトに格納されている。


Eclipse上でManagement Serverの
Webアプリを使えるようにしたいけど
そこに持って行くには
agentパッケージとか多分使っていないから
そのあたりを分離してやらないといけないか..

だれかやってないかなあ..
..やってても自社内からださないかな..

というかCloudStack APIをコールする
別アプリとして構築しているのかな。
そのほうがソース読まないから楽だろうし..



0 件のコメント:

FloydHubを使ってKerasのサンプル lstm_text_generation.py を動かしてみる

タイムラインにふらっと入ってきた記事で FloydHubというものを知った。 FloydHub https://www.floydhub.com/ Heroku風の機械学習環境のPaaSとのこと。 .. そもそもHeroku知らない んですけど..というかPyth...