Skip to content

NetTester API

127.0.0.1 edited this page Jan 27, 2018 · 1 revision

NetTester API

NetTesterはREST APIを備えており、以下のリソースを持っています。

sites

拠点に関するリソース。

DELETE

拠点のNetTesterの初期化およびクリーンアップを行います。
具体的には、作成したホストやパッチのクリア、OpenFlowコントローラの停止などを実施します。

この操作は主に、テストシナリオ起動前や起動後に行い、毎回のテスト同士が同じ流れで実行できるように利用されます。

  • URL
    • sites
  • Request body (json)
    • なし
  • Response body
    • なし

実行例

$ curl -i -X DELETE http://<各拠点のNetTesterサーバのIPアドレス>:3000/sites
HTTP/1.1 204 No Content
Cache-Control: no-cache
X-Request-Id: db677a90-e2fb-4796-840c-b324bc46ebf8
X-Runtime: 0.002541

hosts

各拠点においてNetTesterに繋ぎ込む仮想ホストに関するリソース。

PUT

各拠点での仮想ホスト作成とNetTesterへの繋ぎ込みを実行します。

  • URL
    • hosts/<ホスト名>
  • Request body (json)
    • mac_address
      • ホストインタフェースののMACアドレス
    • ip_address
      • ホストインタフェースののIPアドレス
    • netmask
      • ホストのインタフェースのサブネットマスク
    • gateway
      • ホストのインタフェースのゲートウェイIPアドレス
    • virtual_port_numner
      • NetTesterへの繋ぎこみを行う際の仮想スイッチのポート番号
        • 2以上の整数
    • physical_port_numner
      • NetTesterへの繋ぎこみを行う際の物理スイッチのポート番号
        • 2以上の整数
    • vlan
      • ホストのインタフェースのVLAN情報
  • Response body (json)
    • 作成されたホスト情報 (json)
      • name
        • ホスト名
      • mac_address
        • ホストのMACアドレス
      • ip_address
        • ホストのIPアドレス
      • netmask
        • ホストのサブネットマスク
      • route
        • ホストのルーティング情報
      • vlan
        • ホストのインタフェースのVLAN情報

実行例

$ curl -i -X PUT -H 'Content-Type: application/json' http://<各拠点のNetTesterサーバのIPアドレス>:3000/hosts/host001 -d '{"mac_address": "00:00:5E:00:53:01", "ip_address": "192.168.1.100", "netmask": "255.255.255.0", "gateway": "192.168.1.254", "virtual_port_number": 2, "physical_port_number": 2, "vlan_id": 2000}'
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"5a64a7792f109207fdcb900a89633e0b"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: fa745b2b-6bdc-4804-810d-bb9caf869673
X-Runtime: 2.415405
Transfer-Encoding: chunked

{"name":"host001","ip_address":"192.168.1.100","mac_address":"00:00:5e:00:53:01","netmask":"255.255.255.0","route":{"net":null,"gateway":null},"vlan":null}
  • 留意事項
    • ポート番号1はNetTesterが制御用に利用するため、ホスト作成に利用することは出来ません。
    • 現状のバージョンではホストの削除機能は持たないため、sitesに対するDELETEで全消去してください。

GET

各拠点で作成され、NetTesterに繋ぎ込まれたホストに関する情報を取得します。

  • URL
    • hosts (複数)
    • hosts/<ホスト名> (単数)
  • Request body (json)
    • なし
  • Response body (json)
    • ホスト情報の配列 (複数)
    • ホスト情報 (単数)
      • name
        • ホスト名
      • mac_address
        • ホストのインタフェースのMACアドレス
      • ip_address
        • ホストのインタフェースのIPアドレス
      • netmask
        • ホストのインタフェースのサブネットマスク
      • route
        • ホストのルーティング情報
      • vlan
        • ホストのインタフェースのVLAN情報

実行例

$ curl -i -X GET http://<各拠点のNetTesterサーバのIPアドレス>:3000/hosts
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"a1b229daab1acbd41560dae0968995d9"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 1c352d74-fe8e-40fb-a537-830d11c74c8a
X-Runtime: 0.077933
Transfer-Encoding: chunked

[{"name":"host001","ip_address":"192.168.1.100","mac_address":"00:00:5e:00:53:01","netmask":"255.255.255.0","route":{"net":null,"gateway":null},"vlan":null}]nwtestsys@nettester_1st:~/net-tester$ 

$ curl -i -X GET http://<各拠点のNetTesterサーバのIPアドレス>:3000/hosts/host001
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"5a64a7792f109207fdcb900a89633e0b"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 0962facb-748a-4636-a358-cedb8f7e0be1
X-Runtime: 0.072875
Transfer-Encoding: chunked

{"name":"host001","ip_address":"192.168.1.100","mac_address":"00:00:5e:00:53:01","netmask":"255.255.255.0","route":{"net":null,"gateway":null},"vlan":null}

processes

仮想ホスト上でのプロセス実行に関するリソース。

POST

各拠点の仮想ホスト上で、指定したプロセスを実行します。

  • URL
    • processes
  • Request body (json)
    • host_name
      • プロセスを実行する仮想ホスト
    • command
      • 実行するプロセスのコマンドライン
    • initial_wait
      • プロセスが生成されてから開始されるまでの遅延時間(秒)
        • 任意、デフォルト3秒
    • process_wait
      • プロセスが終了してからステータスがfinishedに更新されるまでの遅延時間(秒)
        • 任意、デフォルト1秒
  • Response body (json)
    • 作成されたプロセス情報 (json)
      • id
        • プロセスリソースのID
      • host_name
        • プロセスが実行されているホスト名
      • log_dir
        • プロセスのログディレクトリ
      • stdout_file
        • プロセスのstdoutの内容が出力されるファイル
      • stderr_file
        • プロセスのstderrの内容が出力されるファイル
      • initial_wait
        • 採用されたinitial_waitの時間
      • process_wait
        • 採用されたprocess_waitの時間
      • stdout
        • stdoutの内容 (空)
      • stderr
        • stdinの内容 (空)
      • status
        • プロセスの実行状態
          • created
            • プロセス生成直後
          • waiting initial wait
            • initial wait 待機中
          • running
            • 実行中
          • waiting process wait
            • process wait 待機中
          • finished
            • 完了

実行例

$ # 実行
$ curl -i -X POST <各拠点のNetTesterサーバのIPアドレス>:3000/processes -H "Content-Type: application/json" -d '{"host_name": "host001", "command": "ping -c 10 127.0.0.1"}'
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"3e266c38f2f7b0c5ee4946ba0920ab33"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 15b88490-09eb-4d46-bdf3-5ed35973a0ab
X-Runtime: 0.076784
Transfer-Encoding: chunked

{"id":1,"host_name":"host001","log_dir":"tmp/aruba/processes/1","stdout_file":"tmp/aruba/processes/1/stdout.log","stderr_file":"tmp/aruba/processes/1/stderr.log","initial_wait":3,"process_wait":1,"stdout":"","stderr":"","status":"created"}$ 
  • 留意事項
    • 現状のバージョンではプロセスの停止および削除機能は持たないため、sitesに対するDELETEで全終了、全消去してください。

GET

各拠点の仮想ホスト上で実行したプロセスの情報を取得します。

  • URL
    • processes/<プロセスリソースのID> (単数)
    • processes (複数)
  • Request body (json)
    • なし
  • Response body (json)
    • プロセス情報の配列(複数)
    • プロセス情報(単数)
      • id
        • プロセスリソースのID
      • host_name
        • プロセスが実行されているホスト名
      • log_dir
        • プロセスのログディレクトリ
      • stdout_file
        • プロセスのstdoutの内容が出力されるファイル
      • stderr_file
        • プロセスのstderrの内容が出力されるファイル
      • initial_wait
        • 採用されたinitial_waitの時間
      • process_wait
        • 採用されたprocess_waitの時間
      • stdout
        • stdoutの内容
      • stderr
        • stdinの内容
      • status
        • プロセスの実行状態
          • created
            • プロセス生成直後
          • waiting initial wait
            • initial wait 待機中
          • running
            • 実行中
          • waiting process wait
            • process wait 待機中
          • finished
            • 完了

実行例

$ # 取得(複数)
$ curl -i -X GET <各拠点のNetTesterサーバのIPアドレス>:3000/processes
curl -i -X GET localhost:3000/processes
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"26f1f6fb98bff344fba54156e245a232"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 35fe7d74-fac6-4761-ad85-33fb6d58853a
X-Runtime: 0.003684
Transfer-Encoding: chunked

[{"id":1,"host_name":"host001","log_dir":"tmp/aruba/processes/1","stdout_file":"tmp/aruba/processes/1/stdout.log","stderr_file":"tmp/aruba/processes/1/stderr.log","initial_wait":3,"process_wait":1,"stdout":"PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.024 ms\n64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.027 ms\n64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.033 ms\n64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.037 ms\n64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.036 ms\n64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.039 ms\n64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.045 ms\n64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.042 ms\n64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.032 ms\n\n--- 127.0.0.1 ping statistics ---\n10 packets transmitted, 10 received, 0% packet loss, time 8998ms\nrtt min/avg/max/mdev = 0.024/0.034/0.045/0.009 ms\n","stderr":"","status":"finished"},{"id":2,"host_name":"host001","log_dir":"tmp/aruba/processes/2","stdout_file":"tmp/aruba/processes/2/stdout.log","stderr_file":"tmp/aruba/processes/2/stderr.log","initial_wait":3,"process_wait":1,"stdout":"PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.042 ms\n64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.037 ms\n64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.037 ms\n64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.041 ms\n64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.044 ms\n64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.042 ms\n64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.039 ms\n64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.037 ms\n64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.046 ms\n\n--- 127.0.0.1 ping statistics ---\n10 packets transmitted, 10 received, 0% packet loss, time 8998ms\nrtt min/avg/max/mdev = 0.032/0.039/0.046/0.008 ms\n","stderr":"","status":"finished"},{"id":3,"host_name":"host001","log_dir":"tmp/aruba/processes/3","stdout_file":"tmp/aruba/processes/3/stdout.log","stderr_file":"tmp/aruba/processes/3/stderr.log","initial_wait":3,"process_wait":1,"stdout":"PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.027 ms\n64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.031 ms\n64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.037 ms\n64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.032 ms\n64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.029 ms\n\n--- 127.0.0.1 ping statistics ---\n10 packets transmitted, 10 received, 0% packet loss, time 8998ms\nrtt min/avg/max/mdev = 0.027/0.031/0.037/0.007 ms\n","stderr":"","status":"finished"},{"id":4,"host_name":"host001","log_dir":"tmp/aruba/processes/4","stdout_file":"tmp/aruba/processes/4/stdout.log","stderr_file":"tmp/aruba/processes/4/stderr.log","initial_wait":3,"process_wait":1,"stdout":"PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.024 ms\n64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.031 ms\n64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms\n64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.035 ms\n64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.033 ms\n64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.036 ms\n64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.040 ms\n\n--- 127.0.0.1 ping statistics ---\n10 packets transmitted, 10 received, 0% packet loss, time 8998ms\nrtt min/avg/max/mdev = 0.024/0.033/0.040/0.008 ms\n","stderr":"","status":"finished"}]

$ # 実行結果確認(単数、未完了時)
$ curl -i -X GET <各拠点のNetTesterサーバのIPアドレス>3000/processes/1 
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"dbf9eb84f567ea8c3b81ea696f307a0c"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: ab8d1f40-f579-4b04-b6e2-cb4cb693801c
X-Runtime: 0.002701
Transfer-Encoding: chunked

{"id":1,"host_name":"host001","log_dir":"tmp/aruba/processes/1","stdout_file":"tmp/aruba/processes/1/stdout.log","stderr_file":"tmp/aruba/processes/1/stderr.log","initial_wait":3,"process_wait":1,"stdout":"","stderr":"","status":"running"}$ 

$ # 実行結果確認(単数、完了時)
$ curl -i -X GET <各拠点のNetTesterサーバのIPアドレス>:3000/processes/1 
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
ETag: W/"6968d25e59f9aa6087636f40b3bb3ed4"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 22db7657-9d66-4046-a357-9a6dbb94eba3
X-Runtime: 0.004817
Transfer-Encoding: chunked

{"id":1,"host_name":"host001","log_dir":"tmp/aruba/processes/1","stdout_file":"tmp/aruba/processes/1/stdout.log","stderr_file":"tmp/aruba/processes/1/stderr.log","initial_wait":3,"process_wait":1,"stdout":"PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.024 ms\n64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.031 ms\n64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms\n64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.035 ms\n64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.033 ms\n64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.034 ms\n64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.036 ms\n64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.040 ms\n\n--- 127.0.0.1 ping statistics ---\n10 packets transmitted, 10 received, 0% packet loss, time 8998ms\nrtt min/avg/max/mdev = 0.024/0.033/0.040/0.008 ms\n","stderr":"","status":"finished"}$ 
  • 留意事項
    • プロセスは非同期で実行されるため、終了の判定はGETメソッドの結果がfinishedであるかどうかで行います。
    • stdout、stderrはステータスがfinishedになった時に値の取得ができるようになります。