-
Notifications
You must be signed in to change notification settings - Fork 0
NetTester API
127.0.0.1 edited this page Jan 27, 2018
·
1 revision
NetTesterはREST APIを備えており、以下のリソースを持っています。
拠点に関するリソース。
拠点の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
各拠点においてNetTesterに繋ぎ込む仮想ホストに関するリソース。
各拠点での仮想ホスト作成とNetTesterへの繋ぎ込みを実行します。
- URL
- hosts/<ホスト名>
- Request body (json)
- mac_address
- ホストインタフェースののMACアドレス
- ip_address
- ホストインタフェースののIPアドレス
- netmask
- ホストのインタフェースのサブネットマスク
- gateway
- ホストのインタフェースのゲートウェイIPアドレス
- virtual_port_numner
- NetTesterへの繋ぎこみを行う際の仮想スイッチのポート番号
- 2以上の整数
- NetTesterへの繋ぎこみを行う際の仮想スイッチのポート番号
- physical_port_numner
- NetTesterへの繋ぎこみを行う際の物理スイッチのポート番号
- 2以上の整数
- NetTesterへの繋ぎこみを行う際の物理スイッチのポート番号
- vlan
- ホストのインタフェースのVLAN情報
- mac_address
- Response body (json)
- 作成されたホスト情報 (json)
- name
- ホスト名
- mac_address
- ホストのMACアドレス
- ip_address
- ホストのIPアドレス
- netmask
- ホストのサブネットマスク
- route
- ホストのルーティング情報
- vlan
- ホストのインタフェースのVLAN情報
- name
- 作成されたホスト情報 (json)
$ 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で全消去してください。
各拠点で作成され、NetTesterに繋ぎ込まれたホストに関する情報を取得します。
- URL
- hosts (複数)
- hosts/<ホスト名> (単数)
- Request body (json)
- なし
- Response body (json)
- ホスト情報の配列 (複数)
- ホスト情報 (単数)
- name
- ホスト名
- mac_address
- ホストのインタフェースのMACアドレス
- ip_address
- ホストのインタフェースのIPアドレス
- netmask
- ホストのインタフェースのサブネットマスク
- route
- ホストのルーティング情報
- vlan
- ホストのインタフェースのVLAN情報
- name
$ 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}
仮想ホスト上でのプロセス実行に関するリソース。
各拠点の仮想ホスト上で、指定したプロセスを実行します。
- URL
- processes
- Request body (json)
- host_name
- プロセスを実行する仮想ホスト
- command
- 実行するプロセスのコマンドライン
- initial_wait
- プロセスが生成されてから開始されるまでの遅延時間(秒)
- 任意、デフォルト3秒
- プロセスが生成されてから開始されるまでの遅延時間(秒)
- process_wait
- プロセスが終了してからステータスがfinishedに更新されるまでの遅延時間(秒)
- 任意、デフォルト1秒
- プロセスが終了してからステータスがfinishedに更新されるまでの遅延時間(秒)
- host_name
- 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
- 完了
- created
- プロセスの実行状態
- id
- 作成されたプロセス情報 (json)
$ # 実行
$ 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で全終了、全消去してください。
各拠点の仮想ホスト上で実行したプロセスの情報を取得します。
- 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
- 完了
- created
- プロセスの実行状態
- id
$ # 取得(複数)
$ 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になった時に値の取得ができるようになります。