apicのrest api入門
TRANSCRIPT
• API / REST APIとは?
• ACIのモデル構造
• デモプログラム
• デモプログラムの解説
おしながき
• 横石 雄大 (よこいし たけひろ)
• 2回目の登壇
• 8月以降も部署異動無しで、淡々とSDNやってます。
• 学生時代
• ネットワーク・サービス運用 (研究室やバイト先などで)
• ウェブアプリケーション開発 (得意な言語はRuby)
• 趣味
• 食べること。(ブログもやってます。 https://www.dokalog.net/ )
とりあえず自己紹介
• Application Programing Interface
• ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。 (Wikipedia)
• 他のプログラムから制御してもらうときに使ってもらう入り口
API??
• 意図する使い方をしてほしい。
• 直接DBを操作されたくない。
• オブジェクト間の連携等があるので、適切に処理したい。
• 自分のサービスの利用者が増やしたい。
• 別のソフトの作成者は、手間のかかるところを他に任せることが可能(ユーザ認証など)
APIを公開する理由
自作のソフト
ツイート
DM
フォロー
API
ユーザ
• コメント) 大丈夫だけど、手間やデータ量が余分にかかってしまいます。
• 例) ユーザAの最新のツイートが見たい。
普通にAPI使わずに、やるのじゃだめなの???
自作のソフト
Web In
terfa
ce
HTMLファイル
HTTP アクセス
HTML ヘッダー
HTML 本体
見た目を調整(CSS)
動きなど(JS)
その他の情報(meta)
ツイート本体
サイドメニュー
ページヘッダー
SOAP REST
自作のソフト
サーバー
SOAP-Request(XML)
SOAP-Response(XML)
HTTP / STMPなど 自作のソフト
サーバー
HTTP Response(XML, JSONなど)
HTTP Request(不要な場合も)
HTTP• リソースはアクセスするURL• 操作をHTTP Method
標準で定義
各サービスで定義
どのリソースどのような操作
• リソースの場所は、URLのHTTP Pathで表現
• https://サーバー/なんとか/かんとか
• リソースの操作は、HTTP Methodで識別
• 新規作成(Create): POST
• リソースの情報取得(Read): GET
• 更新(Update): PUT
• リソース削除(Delete): DELETE
• 操作に対する応答は、HTTP Status Codeを利用
• 成功時: 2xx
• クライアント側のエラー: 4xx
REST の原則
一部だけ実装されている事もある 全部原則に基づいて
実装されているものを区別して“RESTful” と表現する事もある。
“新規作成”と”更新”は、HTTP Methodで一致するものがないため、解釈の違いが生まれる事が多い。
APICのAPI
• アクセスパスは2通り
• (http | https)://host [:port] /api/mo/dn.(json | xml)
• オブジェクト一つ一つにアクセスするときに利用
• dn: distinguished name -> ユニークな名前
• (http | https)://host [:port] /api/class/className.(json | xml)
• クラスごとに列挙するときに利用
• 注意: クラス名は、”:”を抜く。
• 例) テナントクラス fv:Tenant -> fvTenant
• オブジェクトを作成するときには、上位オブジェクトにHTTP POST
APICのAPIの基本
アクセスパスによる構造の違い
class
fv:Tenant
テナント1 テナント2
fv:Ctx
VRF1
fv:BD
BD1
mo
uni
テナント1
VRF1 BD1
テナント2
…
クラスでのアクセス(/api/class/xxxx)
オブジェクトでのアクセス(/api/mo/xxxx)
クラス / DNの確認方法 (Debug Info)
ユーザー名を選びShow Debug Info
画面左下に閲覧中のオブジェクトのクラスとDNが表示
MOの確認 (Object Store Browser)
ユーザー名を選び“Object Store Browser”
クラス名やDNで検索存在するmoを列挙可能
Objectの親や子供を見る事が可能
• ブラウザの機能で通信の中身を確認
実際の通信の確認 (デベロッパーツールなど)
• URL• Method• Status Codeなど
APIから返るデータを見やすく確認
HTTPのヘッダーChromeのデベロッパーツールを利用
ACI REST デモ
• ACI独自の用語を理解する必要がある。
• 汎用性を高くするために抽象化されている。
ACIのネットワークは今までのネットワークと異なるTenant
VRFBridge Domain
Application Profile
EPGContract
EPG
• 仮想ネットワーク名
• セグメント名
• デフォルトゲートウェイのアドレス
• ポート番号
• vlan番号
通常、ネットワークに必要な情報demo-tenant
client (192.168.0.0/24)
server (192.168.1.0/24)
demo_client192.168.0.1
demo_server192.168.1.1
.254 .254
Leaf1 Leaf2eth1/13vlan 10
eth1/13vlan 10
全て許可
demo-tenant
demo-network
client server
permit-all
VRF
client-seg (192.168.0.0/24)
server-seg (192.168.1.0/24)
demo_client192.168.0.1
demo_server192.168.1.1
.254 .254
通常のネットワークとACIのマッピング
demo-tenant
client (192.168.0.0/24)
server (192.168.1.0/24)
demo_client192.168.0.1
demo_server192.168.1.1
.254 .254
Leaf1 Leaf2eth1/13vlan 10
eth1/13vlan 10
全て許可
通常の仮想ネットワーク ACIのテナント
通常のネットワークとACIのマッピング
通常のネットワーク ACI
仮想ネットワーク名 テナント名
ゲートウェイアドレスBridge Domain
セグメント名EPG
ポート番号Static Bindings (Paths)
vlan 番号
ACL Contract
ライブデモ
REST API デモプログラムの大まかな流れ
テナント作成プログラム
(Ruby)フォーム内容送信プログラム
(JavaScript)
HTTP(GET / POST)
HTTP(GET / POST)
独自フォーマットJSON ACIに準拠したJSON
REST API デモプログラム フローチャート
ウェブブラウザ アプリケーションサーバ APIC
インターフェイス一覧取得(HTTP GET) スイッチ一覧取得
インターフェイス一覧取得(スイッチごと)インターフェイス一覧取得
(結果)
テナント作成(HTTP POST)
テナント作成(実行結果)
テナント作成
ネットワーク作成(VRF, BD)
AP関連作成(AP, EPG, Contract)
ユーザ入力
• REST APIとは?
• APICのREST API
• 実際に作ったもののご紹介• (webページに小細工はいっぱい隠してあるので、気になった人は懇親会で聞いてください)
まとめ
• Cisco APIC REST API User Guide• http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-
x/api/rest/b_APIC_RESTful_API_User_Guide/b_IFC_RESTful_API_User_Guide_chapter_010.html
• APIC Management Information Model Reference• https://developer.cisco.com/media/mim-ref/
• Architectural Styles and the Design of Network-based Software Architectures (Chapter 5)• http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
• 一番最初にRESTの考えを述べた論文
参照URL