EN ESTA PÁGINA
Grupos de recursos (API)
En esta referencia se muestra el uso de la API del grupo de recursos con paridad con la interfaz de usuario. Para obtener la documentación completa de la API, consulte la referencia de la API de la plataforma REST en la GUI de Apstra.
Para enumerar las ranuras de grupo de recursos en un plano, realice un HTTP GET autenticado en https://aos-server/api/blueprints/<blueprint_id>/resource_groups
Se deben asignar tanto grupos de ASN como grupos de IP para que un plano complete la fase de compilación.
API - Grupos de ASN
- Crear grupo de ASN
- Lista de grupos de ASN
- Eliminar grupo de ASN
- Asignar ASN al plano
- Anular la asignación de ASN del plano
- Lista de ASN asignados a Blueprint
Crear grupo de ASN
Un ejemplo de carga útil para crear un grupo de ASN:
Si no se especifica un ID, se creará uno y se devolverá en la respuesta HTTP.
{ "id": "RFC6996-Private", "display_name": "RFC6996-Private", "tags": [ "default" ], "ranges": [ { "last": 65534, "first": 64512 } ] }
Para crear un grupo de ASN, realice un HTTP POST para https://aos-server/api/resources/asn-pools con una carga JSON.
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
Lista de grupos de 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": [] } ] }
Eliminar grupo de ASN
Para eliminar un grupo de ASN, realice un HTTP DELETE en https://aos-server/resources/asn-pools/{pool_id}
Una eliminación correcta devuelve 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
Asignar ASN al plano
Para asignar un grupo de direcciones IP al plano, realice un HTTP PUT en https://aos-server/blueprints/<blueprint_id>/resource_groups/ip/<pool_name>
Por ejemplo, para publicar un grupo de recursos en spine_loopback_ips, obtenga primero el ID del grupo de recursos y agréguelo a una lista para su asignación de ranuras. Al actualizar el grupo de recursos Grupo de direcciones IP, especifique todos los grupos de la carga al mismo tiempo. No podemos agregar grupos individuales, así que PÓNGALOS todos a la vez.
Carga útil:
{"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
Una ASIGNACIÓN correcta devuelve HTTP 200 OK.
Anular la asignación de ASN del plano
Cuando elimine grupos de IP de un plano, PONGA una lista de pool_id vacía en el plano con la carga []
útil:
PUT en el extremo HTTP https://aos-server/api/blueprints/<blueprint_id> /resource_groups/asn/<pool_name>
Con la carga útil:
{ "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
Si la solicitud es exitosa, no habrá respuesta.
Lista de ASN asignados a Blueprint
Los grupos de recursos del grupo de ASN disponibles para la asignación se pueden mostrar con un HTTP GET to https://aos-server/api/blueprints/<blueprint_id>/resource_groups
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 - Grupos de IP
- Crear grupo de IP
- Lista de grupos de IP
- Eliminar grupo de direcciones IP
- Asignar IP al plano
- Eliminar IP de Blueprint
- Lista de direcciones IP asignadas al plano
Crear grupo de IP
Carga JSON para crear un grupo de IP:
{ "id": "example_ip_pool", "display_name": "example_ip_pool", "tags": ["default"], "subnets": [ {"network": "10.0.0.0/8"} ] }
La sección de subredes requiere una lista de diccionarios con red de palabras clave y valor que coincida con una máscara CIDR. Las subredes no pueden superponerse entre sí en el mismo grupo. Es decir, 192.168.10.0/24 y 192.168.0.0/16 no se pueden configurar en el mismo grupo.
Las etiquetas son opcionales y actualmente no se utilizan en Apstra. Si se especifica ID, se guardará; de lo contrario, se devolverá un ID en la respuesta HTTP después de crear el grupo.
Un HTTP POST para https://aos-server/api/resources/ip-pools con carga JSON responderá con el ID del nuevo grupo de IP.
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"}
Lista de grupos de IP
Realice un HTTP GET para 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": [] } ] }
Eliminar grupo de direcciones IP
Para eliminar un grupo de direcciones IP, realice una eliminación HTTP en https://aos-server/resources/ip-pools/{pool_id}
Una eliminación correcta devuelve HTTP 200 OK y una respuesta JSON vacía {}
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
Asignar IP al plano
Para asignar un grupo de direcciones IP al blueprint, realice un HTTP PUT en https://aos-server/blueprints/ <blueprint_id>/resource_groups/ip/<group_name>
Por ejemplo, para asociar una spine_loopback_ips de grupo de recursos con un plano, obtenga primero el ID del grupo de recursos y agréguelo a una lista para su asignación de ranuras. Al actualizar el grupo de recursos Grupo de direcciones IP, especifique todos los grupos de la carga al mismo tiempo. No podemos agregar grupos individuales, así que PÓNGALOS todos a la vez. Indique a Apstra que asocie el grupo de IP con el ID 'ed7d8830-c703-4ac0-8252-77e0f272a677' al plano. Es posible que tenga que OBTENER los ID de grupo existentes antes de agregar uno nuevo para evitar eliminar los grupos existentes.
Carga útil:
{"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
Una ASIGNACIÓN correcta devuelve un HTTP 200 OK.
Eliminar IP de Blueprint
Para eliminar grupos de IP del plano, PONGA una lista vacía pool_id
en el plano con la carga:[]
PUT en el extremo HTTP https://aos-server/api/blueprints/<blueprint_id>/ resource_groups/ip/<allocation_group_name>
Con la carga útil:
{ "pool_ids": [] }
Ejemplo de 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
Una ELIMINACIÓN correcta devuelve una respuesta vacía: {}
Lista de direcciones IP asignadas al plano
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" } ] }