こんにちはKUROです。

 

先日、goboucchiさんがREST APIのことを触れられていた、REST APIを実際に使ってみました。

以下、簡単に紹介させていただきたいと思います。

実装されている、FOS 8.2は、Dell EMCではまだリリースされておらず、4月初旬の予定のようです。

 

Pythonモジュールの、pyFOSの方はいずれ紹介したいとは思いますが、今回は見送らせていただきました。

興味のある方はこのあたりから取得して使ってみてください。

 

今回は、アプリケーションやスクリプトとしてではなく、curl(1)でお試ししました。


1. REST APIが有効になっているかを確認

          mgmtAppコマンドで設定が有効になっているか確認します。

     RestAPI_show.png

          このシステムではすでに有効になっています。"Disabled"となっている場合は、"mgmtapp --enable rest"を実行して有効にしてください。


2. まずは、ログインしてみる

          curlコマンドのオプションに "--user <user:password>"が用意されているので、これを使ってユーザ名とパスワードを指定します。

          コマンド:POST

          Content-Type: application/yang-data+xml

          url: http://<ip-addr>/rest/login (httpsが推奨です。)


   実行結果

     RestAPI_Login.png

  オレンジ色で囲んだレスポンスヘッダは、セッションキーで以降のリクエストを送信する場合に使用します。



2. ログアウト(logoutを送信)

 この場合は、user/passwordは不要です。ログイン時にレプライされた、Authorizationヘッダをセッションキーとして指定します。

 ですので、以下のようにcurlコマンドを実行します。

 curl -v -X POST -H "Content-Type: application/yang-data+xml" -H "Authorization: Custom_Basic YWRtaW46eHh4OjlhMmU3NTUyNmZhY2QxN2ZjNGQ0ZTViNjkyZDczMmUyMjgzMWI0Y2JjYzU0ZmZlM2YzNGJkODRkZTI0NmExM2Y=" "http://11.22.33.44/rest/logout"

 

3. ログアウト(FOS側から強制的にセッションを終了させる)

 あらたに追加された、appLoginHistoryコマンドで現在のセッションを表示できます。

Rest_API_appLoginHistory_1session.png

 mgmtAppコマンドで強制終了させます。

Rest_API_appLoginHistory_TerminateSession.png

 ピンク色で囲まれた文字列は、"apploginhistory --show"でアクティブなセッションで表示されたエントリです。

 強制終了した結果、再度appLoginHistoryコマンド実行すると、水色で囲まれた部分にはセッションは表示されなくなりました。

 

4. 機器情報を取得(GET http://<switch-IP>/rest/running/fabric/fabric-switch)

Rest_API_fabricfabric-switch.png

 switchShowコマンドのヘッダ部分の情報+アルファといった感じです。数値は16進ではなくて、10進数で表示されます。

 上記の<fcid>16776193</fcid>は、switchShowコマンドのswitchIDの0xfffc01になります。

Rest_API_switchShow_fabric-switch.png

5. ポート情報を取得(GET http://<switch-IP>/rest/running/brocade-interface/fibrechannel)

   switchShowとportCfgShowで示される情報といった感じでしょうか。ポート番号の指定しなければ全ポートの情報を取得します。<slot#>/<port#>の指定を行えば特定ポートのみの情報を取得可能です。ブレードタイプでない機器では、0/<port#>と指定する必要があります。

Rest_API_brocade-interface_fibrechannel.png

 speed: 32Gb: 32000000000

    16Gb: 16000000000

     8Gb: 8000000000

 operational-status: 2: Online/Testing

          3: Offline

          5: Faulty

 enabled-state:  2: Port is enabled

          6: Port is disabled

 と定義されているので、switchShowの以下の状態と一致します。

Rest_API_switchShow_brocade-interface_fibrechannel.png

 

6. ポートの設定変更を行う(PATCH http://<switch-IP>/rest/brocade-interface/fibrechannel)

 お試しということで、ポートのスピード設定を変更してみます。

 6-1. 初期状態

   以下のように自動設定(32Gb)です。

Rest_API_portSpeedOrg.png

 6-2. 最高速度8Gbの自動設定に変更します。(”portcfgspeed 5 0 -m 8”の実行と同じ設定を行いたい。)

Rest_API_portSpeed_Auto8Gb_err.png

 あれれ、エラーとなってしまいました。

 ↓だと、8Gb固定スピードの設定です。

Rest_API_portSpeed_Auto8Gb_err2.png

 マニュアルを確認して見ると、自動設定はread-onlyとなっているので固定⇔自動の変更は不可のようです。

Rest_API_autoNegotiate_Manual.png

 コマンド(portcfgspeed 5 0 -m 8)で有効にした場合の情報では以下のように、<auto-negotiate>1</autonegotiate>と

 なります。

Rest_API_portCfgSpeed_max8Gb.png

 REST APIで取得した情報でも、8Gbの自動設定になっていることを確認出来ます。

Rest_API_portCfgSpeed_max8Gb_brocade-interface_fibrechannel.png

 

7. 各ポートのエラーカウントの取得も可能です(GET http://<switch-ip>/rest/running/brocade-interface/fibrechannel-statistics/。。。)

  すでにSNMPのMIBで取得されているかと思います。Brocade環境では、ifIndexはポート番号と一致していますが、ブレードタイプのモデルでは

  異なるので、<slot#>/<port#>で指定出来るREST APIの方がわかりやすいかもしれません。

Rest_API_fibrechannel-statistics.png

 

 また、サポートエンジニアがよくお願いする、カウンタのリセットもREST APIで可能ですが、ポート毎に行う必要があります。

 

 

それでは、最後にログアウトします。(POST http://<switch-ip>/rest/logout)

Rest_API_logout.png

Rest_API_appLoginHistory_logout.png

真価を発揮すると思われる、ゾーニングに関連する操作の紹介は今回は取り上げていませんが、なんとなく雰囲気が伝われば幸いです。