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 件のコメント:
コメントを投稿