もともとContrailのREST/APIを叩くのに作りましたが、考えてみればOpenStack系のREST/APIでも使えると思ったので公開します。
コードはこちらです。
※まだ入力値のバリデーションとかありません。今後追加していく予定です。
動作:
ユーザー/パスワードをKeystoneに認証し、トークンを受け取った後別のサーバに接続します。
使い方:
Contrail-json.py -k <Keyston IP> -c <Contrail-API> を実行すると、Contrail-APIに接続し、ルートの情報をゲットします。
ゲットしたJSONはデフォルトで見やすくインデントして表示します。
オプション:
-k : Keystone のIPアドレスを入力
-c : Contrail-APIのアドレスを入力
-u : ユーザー名を入力
-p : パスワードを入力
-t : テナント名を入力
-o :get, delete, post, put のいずれかを入力。デフォルトget
-b : JSONメッセージなど、post / putするデータを入力。 ' ' でくくると良い
-d :URIのディレクトリ部を入力。 /v2/network など
-T :ゲットしたJSONメッセージの整形の可否を入力。True/False。デフォルトTrue
-P :認証後に接続するサーバのポート番号を入力。デフォルト8082
例)Keystone と Contrailのアドレスを入れて、仮想ネットワーク一覧を取得
./Contrail_json.py -k 172.27.113.85 -c 172.27.113.85 -u admin -p contrail123 -d virtual-networks
出力結果
{
"virtual-networks": [
{
"fq_name": [
"default-domain",
"default-project",
"ip-fabric"
],
"href": "http://172.27.113.85:8082/virtual-network/263cea75-de70-483b-a05a-76975c8a5387",
"uuid": "263cea75-de70-483b-a05a-76975c8a5387"
},
{
"fq_name": [
"default-domain",
"demo",
"testVN1"
],
"href": "http://172.27.113.85:8082/virtual-network/289ee5a1-f529-45fd-aa43-180520769227",
"uuid": "289ee5a1-f529-45fd-aa43-180520769227"
}
]
}
例)仮想ネットワークを作成
./Contrail_json.py -k 172.27.113.85 -c 172.27.113.85 -u admin -p contrail123 -d virtual-networks -o post -b '{"virtual-network": {"
display_name": "testVN1","flood_unknown_unicast": true,"fq_name": ["default-domain","demo","testVN"],"is_shared": false,"network_ipam_refs": [{"attr": {"ipam_subnets":
[{"addr_from_start": true,"allocation_pools": [],"default_gateway": "20.0.0.1","dhcp_option_list": {"dhcp_option": []},"dns_server_address": "20.0.0.2","enable_dhcp": t
rue,"host_routes": {"route": []},"subnet": {"ip_prefix": "20.0.0.0","ip_prefix_len": 24}}]},"to": ["default-domain","default-project","default-network-ipam"]}],"parent_
type": "project","parent_uuid": "8e19297b-5c3c-4b48-85f2-76229e27b1a1","route_target_list": {"route_target": ["target:64512:39999"]},"router_external": false,"routing_i
nstances": [{"to": ["default-domain","demo","testVN1","testVN1"]}],"uuid": "32100000-0000-0000-0000-000000000001","virtual_network_properties": {"allow_transit": false,
"forwarding_mode": "l2_l3"}}}'
出力結果
{
"virtual-network": {
"fq_name": [
"default-domain",
"demo",
"testVN"
],
"href": "http://172.27.113.85:8082/virtual-network/32100000-0000-0000-0000-000000000001",
"name": "testVN",
"parent_href": "http://172.27.113.85:8082/project/8e19297b-5c3c-4b48-85f2-76229e27b1a1",
"parent_uuid": "8e19297b-5c3c-4b48-85f2-76229e27b1a1",
"uuid": "32100000-0000-0000-0000-000000000001"
}
}
例)仮想ネットワークを削除
./Contrail_json.py -k 172.27.113.85 -c 172.27.113.85 -u admin -p contrail123 -d virtual-networks -o delete
出力結果
delete "virtual-network/32100000-0000-0000-0000-000000000001" succesfully
0 件のコメント:
コメントを投稿