Skip to content

Castoro::Manipulator

lamatsujun edited this page Mar 29, 2012 · 14 revisions

Castoro-Manipulator

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 リクエストを受信した場合、ディレクトリを作成する。処理手順は以下の通り。

  1. MKDIR リクエストを受信する。
  2. 指定された領域にディレクトリを作成する。
    • ディレクトリを作成できない場合は処理を中止し、リクエスト元にエラーレスポンスを返信する。
  3. リクエスト元に処理結果のレスポンスを返信する。

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"}]
      

ディレクトリ移動

MV リクエストを受信した場合、ディレクトリを移動する。処理手順は以下の通り。

  1. MV リクエストを受信する。
  2. 指定された領域にディレクトリを移動する。
    ディレクトリを移動できない場合は処理を中止し、リクエスト元にエラーレスポンスを返信する。
  3. リクエスト元に処理結果のレスポンスを返信する。

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"}]
      

疎通確認への応答

  • NOP リクエストを受信した場合、何も実施せずに NOP レスポンスを返す。
    • レスポンス
      ["1.1","R","NOP",{}]
      
  • NOP リクエスト
    • 疎通確認リクエスト ( No Operation )。詳細は「 Interfaces 1.1 」を参照。
      ["1.1","C","NOP",{}]
      

導入

インストール

Gem インストール要件

  • Ruby バージョン
    • Ruby 1.9.1 (以上
  • 依存 gem

Gem インストール

  • gem のインストールは以下のコマンドで実施する。
    gem install castoro-manipulator
    

コマンド

Manipulator に関するコマンドはすべて castoro-manipulator のサブコマンドである。サブコマンドには、以下がある。

  • setup
  • start
  • stop

castoro-manipulator setup

$ castoro-manipulator setup
*** Setting Castoro::Manipulator config...
--- setup configuration file to /etc/castoro/manipulator.conf...

castoro-manipulator start

  • 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
    

castoro-manipulator stop

  • 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 で操作可能なディレクトリのベースパス。

Gem パッケージ

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 テスト実行用ファイル

ページTOPへ