こんにちはKUROです。

 

先日紹介したREST API for Brocade FabricOS 8.2の続編で、pyFOSの紹介をさせていただきます。

pyFOSは、FabricOSへアクセスするためのPythonモジュールですが、現時点(02/21/2018、Ver 0.9.0)では

READMEに以下のような記述があるように、正式に配布されているものではありません。

     PyFOS - This is a prototype release of PyFOS. The code have only gone through developer unit testing only.

ですので、あくまでも参考情報としてお読みください。

 

お試しに必要な環境:

     1. FOS 8.2以降が稼働しているスイッチ

     2. Python3の実行環境(KUROはDebianを利用)

 

インストール:

     1. gitHubからpyFOSのコピーを入手します。

          git(1)環境を構築せずに、以下のようにcloneをダウンロードしてもいけます。

          Download.png

     2. 適当なディレクトリに展開します。

     3. READMEに以下のようなインストール方法が書かれているのでそれに従って配置しました。

installation:

    1) create library directories

    mkdir ~<login>/python_lib

    mkdir ~<login>/python_lib/lib

    mkdir ~<login>/python_lib/lib/python3.5

    mkdir ~<login>/python_lib/lib/python3.5/site-packages

 

    2) set env variable for library directory

    setenv PYTHONPATH ~<login>/python_lib/lib/python3.5/site-packages

 

    3) install pyfos modules into the library path

    cd <pyfos directory>

    python3 setup.py install --prefix=~<login>/python_lib

 

          ですが、私のDebian 9.3では、”3)”でエラーとなりインストールに失敗したので、

          PYTHONUSERBASEにPYTHONPATHと同じ内容を指定して、

          "python3 setup install --user"

          でインストールしました。

 

実機でお試し

1. sys.pathの追加

    pyFOSモジュールは、ローカルなディレクトリに配置しているので、sys.pathに追加します。

 pathAppend.png

2. loginとlogout

 pyfos_auth.login、pyfos_auth.logoutのサンプルをそのままつかってみました。

 loginlogout1.png

3. スイッチ情報を取得

 スイッチ情報には、fabric_switchクラスとfibrechannel_switchクラスの2つが用意されていて、どちらのメンバーも同じような

 情報を持っています。大きなちがいは、fabric_switchクラスは参照のみ、fibrechannel_switchクラスは変更も出来ることです。

 取り出し方は、まとめて取り出すpyfos_utils.response_print(response)と、アトリビュート毎に取り出すことが出来る、

 peek_xxxxx()のが用意されています。

3-1. まとめて取り出し

3-1-1. fabricクラス

  fabric_switch_reponsePrint.png

3-1-2. switchクラス

  fibrechannel_switch_responsePrint.png

3-2. アトリビュート毎に取り出し(ドメインID、ファームウェアバージョン、モデル番号、)

  fabricDicはfabric_switch object、switchDicはfibrechannel_switch objectになります。

  モデル番号は、fabric_switch objectには用意されていないので、赤字のようにエラーとなります。

  switch_peek.png

 

4. ポート情報を取得

 どちらかというと参照では無く、設定(変更)を行うことが目的と思われますが、取り出してみます。

 クラスはFC portという別のクラスになりますが、取り出し方は先のスイッチ情報と似ています。

  fcport_responsePrint.png

 

参照系だけで恐縮ですが、なんとなく雰囲気が伝われば幸いです。

では。