-
Notifications
You must be signed in to change notification settings - Fork 3
Castoro::Manipulator
lamatsujun edited this page Mar 29, 2012
·
14 revisions
Home > Components > Castoro::Peer >
Manipulator は、Castoro::Peer のサブコンポーネントである。
Peer サーバ内で任意の UNIX ソケットにてリクエストを待受けており、Peer からのリクエストに応じ以下の2つのディレクトリ操作を実施する。
- ディレクトリ作成 ( MKDIR リクエスト )
- ディレクトリ移動 ( MV リクエスト )
※ 作成先、移動元、移動先は Peer がリクエストごとにそれぞれの領域を指定する。
レプリケーションの際も、Peer は Manipulator を用いて作業ディレクトリの作成及び該当ディレクトリの移動を実施する。
下記に、Peer の動作に応じた Manipulator の動作を示す。
ユースケース | Peer | Manipulator |
---|---|---|
Manipulator 使用タイミング | 動作 | |
Basket 作成 | Basket 作成 ( 作業領域へ ) | ディレクトリ作成 |
Basket 作成確定 ( 作業領域 ⇒ 保存領域 ) | ディレクトリ移動 | |
Basket 作成キャンセル ( 作業領域 ⇒ キャンセル領域 ) | ディレクトリ移動 | |
Basket 作成後のレプリケーション ( 作業領域へ ) | ディレクトリ作成 | |
Basket 作成後のレプリケーション確定 ( 作業領域 ⇒ 保存領域 ) | ディレクトリ移動 | |
Basket 作成後のレプリケーションキャンセル ( 作業領域 ⇒ キャンセル領域 ) | ディレクトリ移動 | |
Basket 削除 | Basket 削除 ( 保存領域 ⇒ 削除領域 ) | ディレクトリ移動 |
Basket 削除後のレプリケーション ( 保存領域 ⇒ 削除領域 ) | ディレクトリ移動 |
MKDIR リクエストを受信した場合、ディレクトリを作成する。処理手順は以下の通り。
- MKDIR リクエストを受信する。
- 指定された領域にディレクトリを作成する。
- ディレクトリを作成できない場合は処理を中止し、リクエスト元にエラーレスポンスを返信する。
- リクエスト元に処理結果のレスポンスを返信する。
- ディレクトリ作成要求。詳細は「 Interfaces 1.1 」を参照。
["1.1","C","MKDIR",{"mode":"パーミッション","user":"オーナ","group":"グループ","source":"作成先パス"}]
MKDIR リクエストで作成するディレクトリに指定できる項目は以下の通り。
項目 | 説明 | 値例 |
---|---|---|
Mode | パーミッション | 0777 |
User | オーナ | castoro |
Group | グループ | castoro |
Source | フルパス | /expdsk/source_dir |
- 「 source 」の値は設定ファイルの「 base_directory 」で指定したディレクトリ以下のパスを指定する。
「 base_directory 」の設定方法は後述の「 コンフィグレーションファイルについて 」を参照。- 例.) 上記の表の値を指定した MKDIR リクエスト
["1.1","C","MKDIR",{"mode":"0777","user":"castoro","group":"castoro","source":"/expdsk/source_dir"}]
- 例.) 上記の表の値を指定した MKDIR リクエスト
MV リクエストを受信した場合、ディレクトリを移動する。処理手順は以下の通り。
- MV リクエストを受信する。
- 指定された領域にディレクトリを移動する。
ディレクトリを移動できない場合は処理を中止し、リクエスト元にエラーレスポンスを返信する。 - リクエスト元に処理結果のレスポンスを返信する。
- ディレクトリ移動要求。詳細は「 Interfaces 1.1 」を参照。
["1.1","C","MV",{"mode":"パーミッション","user":"オーナ","group":"グループ","source":"移動元パス","dest":"移動先パス"}]
MV リクエストで移動するディレクトリに指定できる項目は以下の通り。
項目 | 説明 | 値例 |
---|---|---|
mode | パーミッション | 0555 |
user | オーナ | root |
group | グループ | castoro |
source | 移動元ディレクトリのフルパス | /expdsk/source_dir |
dest | 移動先ディレクトリのフルパス | /expdsk/destination_dir |
- 「 source 」及び「 dest 」の値は設定ファイルの「 base_directory 」で指定したディレクトリ以下のパスを指定する。
「 base_directory 」の設定方法は後述の「 コンフィグレーションファイルについて 」を参照。- 例.) 上記の表の値を指定した MV リクエスト
["1.1","C","MV",{"mode":"0555","user":"root","group":"castoro","source":"/expdsk/source_dir","dest":"/expdsk/destination_dir"}]
- 例.) 上記の表の値を指定した MV リクエスト
-
NOP リクエストを受信した場合、何も実施せずに NOP レスポンスを返す。
- レスポンス
["1.1","R","NOP",{}]
- レスポンス
-
NOP リクエスト
- 疎通確認リクエスト ( No Operation )。詳細は「 Interfaces 1.1 」を参照。
["1.1","C","NOP",{}]
- 疎通確認リクエスト ( No Operation )。詳細は「 Interfaces 1.1 」を参照。
- Ruby バージョン
- Ruby 1.9.1 (以上
- 依存 gem
- json (1.2.3 以上
- Castoro::Common
- gem のインストールは以下のコマンドで実施する。
gem install castoro-manipulator
Manipulator に関するコマンドはすべて castoro-manipulator のサブコマンドである。サブコマンドには、以下がある。
- setup
- start
- stop
- Manipulator の起動に必要なコンフィグレーションファイルを作成する。
- 設定ファイルの詳細は後述の「 コンフィグレーションファイルについて 」を参照。
$ castoro-manipulator setup
*** Setting Castoro::Manipulator config...
--- setup configuration file to /etc/castoro/manipulator.conf...
- Manipulator を起動する。
$ castoro-manipulator start --help Usage: castoro-manipulator start [options] -v, --verbose verbose -d, --daemon daemon mode -p, --pid <pidfile> PID file (only for the daemon mode) -l, --log <logfile> Log file (only for the daemon mode) -c, --conf <configfile> Config file -e, --env <environment> Execution environment
- Manipulator を停止する。
$ castoro-manipulator stop --help Usage: castoro-manipulator stop [options] -v, --verbose verbose -f, --force force shutdown -p, --pid <pidfile> PID file
- 設定ファイルは、YAML 形式に基づく。既定のファイルパスは下記。
/etc/castoro/manipulator.conf
- setup コマンドにて作成した設定ファイル ( YAML フォーマット )。値は初期値。
<% require 'logger' %> --- default: logger: " Proc.new { |logfile| Logger.new(logfile) } " user: root workers: 3 loglevel: <%= Logger::INFO %> socket: /var/castoro/manipulator.sock base_directory: /expdsk
設定項目 | 説明 |
---|---|
logger | ログファイル。 |
user | Manipulator プログラムを実行するユーザ。 |
workers | ワーカープロセスの数。 |
loglevel | 0~5までのログレベル。 Logger::Severity に準拠。 |
socket | Manipulator がリクエストを待受ける UNIX ソケット。 |
base_directory | Manipulator で操作可能なディレクトリのベースパス。 |
Manipulator の Gem パッケージの内容物は以下の通り。
castoro-manipulator/ :Castoro-Manipulator コンポーネントのホームディレクトリ
├ COPYING.LESSER :GNU ライセンス
├ History.txt :更新履歴
├ LICENSE :ライセンス情報
├ README.textile :Manipulator に関するドキュメント
├ Rakefile :rake コマンド用ファイル
├─ bin/ :Manipulator 実行ファイル用ディレクトリ
│ └ castoro-manipulator :実行ファイル
├─ lib/ :クラスライブラリ用ディレクトリ
│ ├ castoro-manipulator.rb :依存ライブラリ load 用ファイル
│ └─ castoro-manipulator/ :Castoro-Manipulator を構成するクラスライブラリ用ディレクトリ
│ ├ executor.rb :Manipulator::Executor クラスの定義ファイル
│ ├ manipulator.rb :Manipulator::Manipulator クラスの定義ファイル
│ ├ version.rb :バージョン定義ファイル
│ ├ workers.rb :Manipulator::Workers クラスの定義ファイル
│ └─ scripts/ :Castoro::Manipulator に対する操作をまとめたディレクトリ
│ └ script_runner.rb :Manipulator::ScriptRunner クラスの定義ファイル
├─ pkg/ :各バージョンの gem パッケージ用ディレクトリ
│ ├ castoro-manipulator-0.0.6.gem
│ ├ ・
│ ├ ・
│ └ castoro-manipulator-0.2.0.gem
├─ resources/ :デーモン起動用ディレクトリ
│ ├ castoro-manipulatord :デーモン起動用シェルスクリプト
│ └ manipulator.conf :動作確認用コンフィグレーションファイル
├─ spec/ :テストコード ( RSpec ) 用ディレクトリ
│ ├ executor_spec.rb :Manipulator:: Executor クラスの単体テストコード
│ ├ manipulator_spec.rb :Manipulator の結合テストコード
│ ├ spec_helper.rb :RSpec 実行時の helper コード
│ └ workers_spec.rb :Manipulator::Workers クラスの単体テストコード
└─ tasks/ :rake テスト用ディレクトリ
└ rspec.rake :rake テスト実行用ファイル