このページの内容
リソースプール(API)
このリファレンスでは、UI と同等のリソース グループ API の使用を示しています。完全なAPIドキュメントについては、Apstra GUIのRESTプラットフォームAPIリファレンスを参照してください。
ブループリント内のリソース グループ スロットを一覧表示するには、認証済みの HTTP GET を https://aos-server/api/blueprints/
ブループリントが構築フェーズを完了するためには、 ASNプール と IPプール の両方を割り当てる必要があります。
API - ASNプール
ASNプールの作成
ASNプールを作成するためのペイロードの例:
ID が指定されていない場合は、ID が作成され、HTTP 応答で返されます。
{
"id": "RFC6996-Private",
"display_name": "RFC6996-Private",
"tags": [ "default" ],
"ranges": [
{
"last": 65534,
"first": 64512
}
]
}
ASNプールを作成するには、HTTP POSTを実行してJSONペイロードで https://aos-server/api/resources/asn-pools します。
curl 'https://192.168.25.250/api/resources/asn-pools?comment=create'
-H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6
ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsIn
Nlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3
crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' - --data-binary '{"display_name"
:"Example","ranges":[{"first":100,"last":200}],"tags":[]}' --compressed
--insecure
ASNプールの一覧表示
curl 'https://192.168.25.250/api/resources/asn-pools' -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiY3JlY XRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3Npb24iOiJjOTliO GVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0-lQRXnpPOJ8TCsR G9Wr-DaddnAIj6ko' --compressed --insecure
{
"items": [
{
"created_at": "2017-05-30T12:56:07.293082Z",
"display_name": "Private ASN",
"id": "c23ea447-8f37-419a-9b1c-c48cc55d5b9c",
"last_modified_at": "2017-05-30T12:56:07.293082Z",
"ranges": [
{
"first": 65412,
"last": 65534,
"status": "pool_element_in_use"
}
],
"status": "in_use",
"tags": []
}
]
}
ASNプールの削除
ASNプールを削除するには、HTTP DELETEを実行して https://aos-server/resources/asn-pools/{pool_id}
DELETEに成功すると、HTTP 200 OKが返されます。
curl 'https://192.168.25.250/api/resources/asn-pools/d0312b4a-017e-4478-8b8d-df0417ce8d3b' -X DELETE -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vybm FtZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzW iIsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJ MR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure
ブループリントへのASNの割り当て
IPプールをブループリントに割り当てるには、 https://aos-server/blueprints/
例えば、リソースプールを スパイン_ループバック_ipsに投稿するには、まずリソースプールのIDを取得し、それをスロット割り当てのリストに追加します。IPプールリソースグループを更新する場合は、ペイロード内のすべてのプールを同時に指定します。単一のプールを追加することはできませんので、一度にすべて配置します。
ペイロード:
{"pool_ids": ["pool_id1", "pool_id2", "pool_id3"] }
curl
'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/asn/spine_asns'
-X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vyb
mFtZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTI
wMTgzWiIsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYj
A0ZDYifQ.FnJMR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary
'{"pool_ids":["c23ea447-8f37-419a-9b1c-c48cc55d5b9c"]}' --compressed --insecure
ASSIGNMENTが成功すると、HTTP 200 OKが返されます。
ブループリントからのASNの割り当て解除
ブループリントからIPプールを削除する場合は、空のpool_idリストをペイロード []とともにブループリントにPUTします。
HTTP エンドポイント https://aos-server/api/blueprints/ に置く
ペイロード付き:
{ "pool_ids": [] }
curl
'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/asn/spine_asns'
-X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFt
ZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWi
IsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJ
MR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":[]}'
--compressed --insecure
リクエストが成功しても、応答はありません。
ブループリントに割り当てられたASNを一覧表示する
割り当てに使用可能なASNプール・リソース・グループは、HTTP GETから https://aos-server/api/blueprints/
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups' -H 'AuthToken: eyJhbGciOiJIUzI1NwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgz WiIsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZD YifQ.FnJMR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure | python -m json.tool
{
"items": [
{
"name": "leaf_asns",
"pool_ids": [
"c23ea447-8f37-419a-9b1c-c48cc55d5b9c"
],
"type": "asn"
},
{
"name": "spine_asns",
"pool_ids": [
"c23ea447-8f37-419a-9b1c-c48cc55d5b9c"
],
"type": "asn"
},
{
"name": "leaf_loopback_ips",
"pool_ids": [
"56e8e0dc-babd-4652-92a5-fc37294a7b26"
],
"type": "ip"
},
{
"name": "mlag_domain_svi_subnets",
"pool_ids": [
"ed7d8830-c703-4ac0-8252-77e0f272a677"
],
"type": "ip"
},
{
"name": "spine_leaf_link_ips",
"pool_ids": [
"ed7d8830-c703-4ac0-8252-77e0f272a677"
],
"type": "ip"
},
{
"name": "spine_loopback_ips",
"pool_ids": [
"56e8e0dc-babd-4652-92a5-fc37294a7b26"
],
"type": "ip"
}
]
}
API - IPプール
IPプールの作成
IPプールを作成するためのJSONペイロード:
{
"id": "example_ip_pool",
"display_name": "example_ip_pool",
"tags": ["default"],
"subnets": [
{"network": "10.0.0.0/8"}
]
}
サブネットセクションには、キーワードnetworkとCIDRマスクに一致する値を持つ辞書のリストが必要です。サブネットを同じプール内で互いに重複させることはできません。つまり、192.168.10.0/24 と 192.168.0.0/16 を同じプールで設定することはできません。
タグはオプションであり、現在Apstraでは使用されていません。ID が指定されている場合は保存されます。そうでない場合は、プールの作成後に HTTP 応答で ID が返されます。
JSON ペイロードを使用して https://aos-server/api/resources/ip-pools への HTTP POST は、新しい IP プールの ID で応答します。
curl 'https://192.168.25.250/api/resources/ip-pools' -X
POST -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmF
tZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWi
IsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.Fn
JMR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"display_name":
"example_ip_pool","subnets":[{"network":"10.0.0.0/8"},{"network":
"192.168.0.0/16"}],"tags":[]}' --compressed --insecure
{"id": "d0312b4a-017e-4478-8b8d-df0417ce8d3b"}
IPプールを一覧表示
HTTP GETを https://aos-server/api/resources/ip-pools に実行する
jp@ApstraVM ~ $ curl 'https://192.168.25.250/api/resources/ip-pools' -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbW luIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3Npb24 iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0-lQRXnpP OJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure | python -m json.tool
{
"items": [
{
"created_at": "2017-05-31T03:48:38.562331Z",
"display_name": "example_ip_pool",
"id": "d5046aa6-eab2-4990-9816-0a519ce1a8db",
"last_modified_at": "2017-05-31T03:48:38.562331Z",
"status": "not_in_use",
"subnets": [
{
"network": "10.0.0.0/8",
"status": "pool_element_available"
},
{
"network": "192.168.0.0/16",
"status": "pool_element_available"
}
],
"tags": []
},
{
"created_at": "2017-05-30T12:56:50.576598Z",
"display_name": "L3-CLOS",
"id": "ed7d8830-c703-4ac0-8252-77e0f272a677",
"last_modified_at": "2017-05-30T12:56:50.576598Z",
"status": "in_use",
"subnets": [
{
"network": "10.16.0.0/16",
"status": "pool_element_in_use"
}
],
"tags": []
},
{
"created_at": "2017-05-30T12:56:24.222906Z",
"display_name": "Loopbacks",
"id": "56e8e0dc-babd-4652-92a5-fc37294a7b26",
"last_modified_at": "2017-05-30T12:56:24.222906Z",
"status": "in_use",
"subnets": [
{
"network": "10.254.0.0/16",
"status": "pool_element_in_use"
}
],
"tags": []
},
{
"created_at": "2017-05-31T03:49:15.485164Z",
"display_name": "example_ip_pool",
"id": "d0312b4a-017e-4478-8b8d-df0417ce8d3b",
"last_modified_at": "2017-05-31T03:49:15.485164Z",
"status": "not_in_use",
"subnets": [
{
"network": "10.0.0.0/8",
"status": "pool_element_available"
},
{
"network": "192.168.0.0/16",
"status": "pool_element_available"
}
],
"tags": []
}
]
}
IPプールを削除
IP プールを削除するには、HTTP DELETE を実行して https://aos-server/resources/ip-pools/{pool_id}
DELETEに成功すると、HTTP 200 OKと空のJSON応答が返されます {}
curl 'https://192.168.25.250/api/resources/ip-pools/d0312b4a-017e-4478-8b8d-df0417ce8d3b' -X DELETE -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZS I6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNl c3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0 -lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure
BlueprintへのIPの割り当て
IPプールをブループリントに割り当てるには、HTTP PUTを実行して https://aos-server/blueprints/
例えば、リソースプールを スパイン_ループバック_ips をブループリントに関連付けるには、まずリソースプールのIDを取得し、それをスロット割り当てのリストに追加します。IPプールリソースグループを更新する場合は、ペイロード内のすべてのプールを同時に指定します。単一のプールを追加することはできませんので、一度にすべて配置します。IDが「ed7d8830-c703-4ac0-8252-77e0f272a677」のIPプールを設計図に関連付けるようにApstraに指示します。既存のプールを削除しないように、新しいプールIDを追加する前に既存のプールIDを取得する必要がある場合があります。
ペイロード:
{"pool_ids": ["pool_id1", "pool_id2", "pool_id3"] }
curl
'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/ip/spine_loopback_ips'
-X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImF
kbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3Npb2
4iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0-lQRXnp
POJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":["ed7d8830-c703-4ac0-825
2-77e0f272a677"]}' --compressed --insecure
ASSIGNMENTが成功すると、HTTP 200 OKが返されます。
ブループリントからIPを削除
ブループリントからIPプールを削除するには、ペイロード[]があるブループリントに空のpool_idリストを配置します。
HTTP エンドポイント https://aos-server/api/blueprints/
ペイロード付き:
{ "pool_ids": [] }
CURLの例
curl
'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/ip/spine_loopback_ips'
-X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZ
SI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsI
nNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3cr
PoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":[]}'
--compressed --insecure
REMOVAL が成功すると、空の応答が返されます。 {}
ブループリントに割り当てられたIPを一覧表示する
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups' -H 'AuthToken: eyJhbGciOiJIUzI1NwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3 Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD 0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure | python -m json.tool
{
"items": [
{
"name": "leaf_asns",
"pool_ids": [
"c23ea447-8f37-419a-9b1c-c48cc55d5b9c"
],
"type": "asn"
},
{
"name": "spine_asns",
"pool_ids": [
"c23ea447-8f37-419a-9b1c-c48cc55d5b9c"
],
"type": "asn"
},
{
"name": "leaf_loopback_ips",
"pool_ids": [
"56e8e0dc-babd-4652-92a5-fc37294a7b26"
],
"type": "ip"
},
{
"name": "mlag_domain_svi_subnets",
"pool_ids": [
"ed7d8830-c703-4ac0-8252-77e0f272a677"
],
"type": "ip"
},
{
"name": "spine_leaf_link_ips",
"pool_ids": [
"ed7d8830-c703-4ac0-8252-77e0f272a677"
],
"type": "ip"
},
{
"name": "spine_loopback_ips",
"pool_ids": [
"56e8e0dc-babd-4652-92a5-fc37294a7b26"
],
"type": "ip"
}
]
}