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

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...