2013年9月1日日曜日

Tremaを試す ~hello trema その2~

こんにちは、鯵王です。

今回はrubyの勉強も兼ねてhello_tremaを詳しく見てみます。

サンプルプログラムのHello_trema.rbファイルをcatコマンド等で表示します。
以下はプログラム部分だけ抜粋しました。
先頭の数字は行番号です。

(hello_trema.rb)
1  class HelloTrema < Controller
2    def switch_ready datapath_id
3      info "Hello %#x!" % datapath_id
4    end
5  end

1行目
「class 名前」と書く事でクラスを定義します。ここではHelloTremaクラスを定義しています。
「<」記号はクラスの継承を意味し、ここではControllerクラスを継承しています。
Controllerクラスを継承することで、OpenFlowコントローラのベースとなるプログラムを自分で書かかずにHelloTremaという新しいOpenFlowコントローラを作れるようになります。
2行目
「def 名前」でメソッドの定義をします。ここではswitch_readyメソッドを定義しています。
switch_readyメソッドに書かれた処理は、OpenFlowコントローラとOpenFlowスイッチの接続が完了すると実行されます。
3行目
infoはロギング機能です。
infoの後に記述されたコメントは画面に表示されるとともに、ログファイルに出力されます。
「%#x」はロギングで出力する文字のフォーマットを指定しており、フォーマットの内容が「#x」のため2つ目の「%」の後にあるdatapath_idを16進数で出力します。
結果は「Hello 」 + datapath_idの16進数 + 「!」と表示します。
4行目
2行目のdefから4行目のendまでを一つのかたまりとしてプログラムを書いています。
5行目
1行目のclassから始まったプログラムの終了を示しています。


続いてsample.confファイルを見てみます。
先頭の数字は行番号です。

(sample.conf)
1  vswitch { datapath_id "0xabc" }

1行目
datapath_idが「0xabc」のスイッチを一つ定義しています。
datapath_idとはOpenFlowスイッチの識別IDのようなものです。

Hello-tremaについては以上になります。

0 件のコメント:

コメントを投稿