05-16-2019 10:18 AM
Hello,
I need to apply via API template configurations, but I was looking and can't find any example about how I can do it.
Please, can someone share an example, please?
Thanks.
Solved! Go to Solution.
05-17-2019 08:12 AM - edited 05-17-2019 08:19 AM
Sure Juraj, let me present an example with manual execution. For you information:
- I did all API request via https://vmanage/apidocs/, but you can use any other tool or script.
- I'm showing only relevant output, not the full API output.
- The steps described below are just showing an example to help you understand. There might be other ways to achieve same results, and some points could potentially be simplified.
Let's say I have a very basic device template with single VPN0 interface:
system host-name {{hostname}} system-ip {{system_ip}} site-id {{site_id}} admin-tech-on-failure no route-consistency-check sp-organization-name xxx organization-name xxx vbond xxx aaa auth-order local radius tacacs usergroup basic task system read write task interface read write ! usergroup netadmin ! usergroup operator task system read task interface read task policy read task routing read task security read ! user admin password xxx ! ! ! vpn 0 name "Transport VPN" interface {{gold_interface_name}} ip address {{gold_ip_and_mask}} tunnel-interface encapsulation ipsec color gold restrict ! no shutdown ! ip route 0.0.0.0/0 {{gold_default_ip}} ! vpn 512 interface eth0 shutdown ! !
In order to attach it:
https://vmanage/dataservice/template/device
Input:
-
Output:
{ "deviceType": "vedge-cloud", "lastUpdatedBy": "tzarski", "factoryDefault": false, "templateName": "api-test", "devicesAttached": 1, "templateDescription": "api-test", "lastUpdatedOn": 1558102175069, "configType": "file", "templateId": "0372c72d-85dc-4d6e-9638-8af5606c943e", "templateAttached": 0 },
https://vmanage:443/dataservice/device
Input:
-
Output:
{ "deviceId": "55.10.10.10", "system-ip": "55.10.10.10", "host-name": "BR10", "reachability": "reachable", "status": "normal", "personality": "vedge", "device-type": "vedge", "timezone": "UTC", "device-groups": [ "\"No groups\"" ], "lastupdated": 1558086976605, "bfdSessionsUp": 1, "domain-id": "1", "board-serial": "C9D90A7F", "certificate-validity": "Valid", "max-controllers": "0", "uuid": "476b71d4-308b-3f38-807e-982e8360cb9d", "bfdSessions": "1", "controlConnections": "2", "device-model": "vedge-cloud", "version": "18.3.5", "connectedVManages": [ "\"10.0.0.1\"" ],
https://vmanage/dataservice/template/device/config/input
Input:
{ "templateId":"0372c72d-85dc-4d6e-9638-8af5606c943e", "deviceIds": [ "476b71d4-308b-3f38-807e-982e8360cb9d" ], "isEdited":false, "isMasterEdited":false } }
Output:
"data": [ { "csv-status": "in_complete", "csv-deviceId": "476b71d4-308b-3f38-807e-982e8360cb9d", "csv-deviceIP": "55.10.10.10", "csv-host-name": "BR10", "hostname": "", "system_ip": "", "site_id": "", "gold_interface_name": "", "gold_ip_and_mask": "", "gold_default_ip": "" } ]
https://vmanage:443/dataservice/template/device/config/config
Input (change the device section here with filled data from point 4):
{ "templateId":"0372c72d-85dc-4d6e-9638-8af5606c943e", "device":{ "csv-status": "complete", "csv-deviceId": "476b71d4-308b-3f38-807e-982e8360cb9d", "csv-deviceIP": "55.10.10.10", "csv-host-name": "BR10", "hostname": "BR10", "system_ip": "55.10.10.10", "site_id": "55", "gold_interface_name": "ge0/0", "gold_ip_and_mask": "31.2.0.10/24", "gold_default_ip": "31.2.0.1" }, "isEdited":false, "isMasterEdited":false }
Output:
system device-model vedge-cloud host-name BR10 system-ip 55.10.10.10 site-id 55 admin-tech-on-failure no route-consistency-check sp-organization-name xxx organization-name xxx vbond xxx port 12346 aaa auth-order local radius tacacs usergroup basic task system read write task interface read write ! usergroup netadmin ! usergroup operator task system read task interface read task policy read task routing read task security read ! user admin password xxx ! ! logging disk enable ! ! ! omp no shutdown graceful-restart ! vpn 0 name "Transport VPN" interface ge0/0 ip address 31.2.0.10/24 tunnel-interface encapsulation ipsec color gold restrict no allow-service bgp allow-service dhcp allow-service dns allow-service icmp no allow-service sshd no allow-service netconf no allow-service ntp no allow-service ospf no allow-service stun allow-service https ! no shutdown ! ip route 0.0.0.0/0 31.2.0.1 ! vpn 512 interface eth0 shutdown ! ! ! !
https://vmanage:443/dataservice/template/device/config/attachcli
Input (fill "device" data with same data as input in previous point):
{ "deviceTemplateList":[ { "templateId":"0372c72d-85dc-4d6e-9638-8af5606c943e", "device":[ { "csv-status": "complete", "csv-deviceId": "476b71d4-308b-3f38-807e-982e8360cb9d", "csv-deviceIP": "55.10.10.10", "csv-host-name": "BR10", "hostname": "BR10", "system_ip": "55.10.10.10", "site_id": "55", "gold_interface_name": "ge0/0", "gold_ip_and_mask": "31.2.0.10/24", "gold_default_ip": "31.2.0.1" } ], "isEdited":false, "isMasterEdited":false } ] }
Output:
{ "id": "push_file_template_configuration-89f5f490-45de-4dab-8f0f-23b2d09a2444" }
https://vmanage:443/dataservice/device/action/status/push_file_template_configuration-89f5f490-45de-4dab-8f0f-23b2d09a2444
Output:
"data": [ { "activity": [ "[17-May-2019 10:16:23 UTC] Configuring device with cli template: api-test", "[17-May-2019 10:16:23 UTC] Generating configuration from template", "[17-May-2019 10:16:23 UTC] Checking and creating device in vManage", "[17-May-2019 10:16:24 UTC] Device is online", "[17-May-2019 10:16:24 UTC] Updating device configuration in vManage", "[17-May-2019 10:16:25 UTC] Pushing configuration to device, vManage Transaction Id: 2019-05-17T10:16:25.415000+00:00", "[17-May-2019 10:16:25 UTC] Verification of configuration push may take several minutes", "[17-May-2019 10:18:27 UTC] Template successfully attached to device" ], "statusType": "push_file_template_configuration", "local-system-ip": "55.10.10.10", "vmanageIP": "10.0.0.1", "system-ip": "55.10.10.10", "site-id": "5510", "host-name": "BR10", "deviceID": "476b71d4-308b-3f38-807e-982e8360cb9d", "uuid": "476b71d4-308b-3f38-807e-982e8360cb9d", "@rid": 3406, "statusId": "success", "currentActivity": "Done - Push CLI Template Configuration",
https://vmanage:443/dataservice/device/sync_status
Input:
-
Output:
{ "device-model": "vedge-cloud", "syncCompleted": 1558104382742, "local-system-ip": "55.10.10.10", "syncState": "Completed", "host-name": "BR10", "deviceId": "55.10.10.10", "uuid": "476b71d4-308b-3f38-807e-982e8360cb9d", "syncScheduled": 0, "layoutLevel": 4, "syncQueued": 1558104381441, "_id": 2242, "reachability": "reachable" },
I hope this helps.
05-16-2019 12:21 PM - edited 05-16-2019 12:23 PM
The process is described on: https://sdwan-docs.cisco.com/Product_Documentation/Command_Reference/vManage_REST_APIs/Device_Configuration_APIs/Device_Templates#Attach_Device_Templates
1. Generate Device Input Variables: https://vmanage-ip-address/dataservice/template/device/config/input
2. Preview Device Configuration with variables filled: https://vmanage-ip-address/dataservice/template/device/config/config
3. Attach Device Template: https://vmanage-ip-address/dataservice/template/device/config/attachcli or https://vmanage-ip-address/dataservice/template/device/config/attachfeature
4. Monitor attach action: https://vmanage-ip-address/dataservice/device/action/status/{attachID}
05-16-2019 12:30 PM
Hello,
I just check the link you posted and still not clear, do you have any kind of examples I can check?
Thanks.
05-17-2019 08:12 AM - edited 05-17-2019 08:19 AM
Sure Juraj, let me present an example with manual execution. For you information:
- I did all API request via https://vmanage/apidocs/, but you can use any other tool or script.
- I'm showing only relevant output, not the full API output.
- The steps described below are just showing an example to help you understand. There might be other ways to achieve same results, and some points could potentially be simplified.
Let's say I have a very basic device template with single VPN0 interface:
system host-name {{hostname}} system-ip {{system_ip}} site-id {{site_id}} admin-tech-on-failure no route-consistency-check sp-organization-name xxx organization-name xxx vbond xxx aaa auth-order local radius tacacs usergroup basic task system read write task interface read write ! usergroup netadmin ! usergroup operator task system read task interface read task policy read task routing read task security read ! user admin password xxx ! ! ! vpn 0 name "Transport VPN" interface {{gold_interface_name}} ip address {{gold_ip_and_mask}} tunnel-interface encapsulation ipsec color gold restrict ! no shutdown ! ip route 0.0.0.0/0 {{gold_default_ip}} ! vpn 512 interface eth0 shutdown ! !
In order to attach it:
https://vmanage/dataservice/template/device
Input:
-
Output:
{ "deviceType": "vedge-cloud", "lastUpdatedBy": "tzarski", "factoryDefault": false, "templateName": "api-test", "devicesAttached": 1, "templateDescription": "api-test", "lastUpdatedOn": 1558102175069, "configType": "file", "templateId": "0372c72d-85dc-4d6e-9638-8af5606c943e", "templateAttached": 0 },
https://vmanage:443/dataservice/device
Input:
-
Output:
{ "deviceId": "55.10.10.10", "system-ip": "55.10.10.10", "host-name": "BR10", "reachability": "reachable", "status": "normal", "personality": "vedge", "device-type": "vedge", "timezone": "UTC", "device-groups": [ "\"No groups\"" ], "lastupdated": 1558086976605, "bfdSessionsUp": 1, "domain-id": "1", "board-serial": "C9D90A7F", "certificate-validity": "Valid", "max-controllers": "0", "uuid": "476b71d4-308b-3f38-807e-982e8360cb9d", "bfdSessions": "1", "controlConnections": "2", "device-model": "vedge-cloud", "version": "18.3.5", "connectedVManages": [ "\"10.0.0.1\"" ],
https://vmanage/dataservice/template/device/config/input
Input:
{ "templateId":"0372c72d-85dc-4d6e-9638-8af5606c943e", "deviceIds": [ "476b71d4-308b-3f38-807e-982e8360cb9d" ], "isEdited":false, "isMasterEdited":false } }
Output:
"data": [ { "csv-status": "in_complete", "csv-deviceId": "476b71d4-308b-3f38-807e-982e8360cb9d", "csv-deviceIP": "55.10.10.10", "csv-host-name": "BR10", "hostname": "", "system_ip": "", "site_id": "", "gold_interface_name": "", "gold_ip_and_mask": "", "gold_default_ip": "" } ]
https://vmanage:443/dataservice/template/device/config/config
Input (change the device section here with filled data from point 4):
{ "templateId":"0372c72d-85dc-4d6e-9638-8af5606c943e", "device":{ "csv-status": "complete", "csv-deviceId": "476b71d4-308b-3f38-807e-982e8360cb9d", "csv-deviceIP": "55.10.10.10", "csv-host-name": "BR10", "hostname": "BR10", "system_ip": "55.10.10.10", "site_id": "55", "gold_interface_name": "ge0/0", "gold_ip_and_mask": "31.2.0.10/24", "gold_default_ip": "31.2.0.1" }, "isEdited":false, "isMasterEdited":false }
Output:
system device-model vedge-cloud host-name BR10 system-ip 55.10.10.10 site-id 55 admin-tech-on-failure no route-consistency-check sp-organization-name xxx organization-name xxx vbond xxx port 12346 aaa auth-order local radius tacacs usergroup basic task system read write task interface read write ! usergroup netadmin ! usergroup operator task system read task interface read task policy read task routing read task security read ! user admin password xxx ! ! logging disk enable ! ! ! omp no shutdown graceful-restart ! vpn 0 name "Transport VPN" interface ge0/0 ip address 31.2.0.10/24 tunnel-interface encapsulation ipsec color gold restrict no allow-service bgp allow-service dhcp allow-service dns allow-service icmp no allow-service sshd no allow-service netconf no allow-service ntp no allow-service ospf no allow-service stun allow-service https ! no shutdown ! ip route 0.0.0.0/0 31.2.0.1 ! vpn 512 interface eth0 shutdown ! ! ! !
https://vmanage:443/dataservice/template/device/config/attachcli
Input (fill "device" data with same data as input in previous point):
{ "deviceTemplateList":[ { "templateId":"0372c72d-85dc-4d6e-9638-8af5606c943e", "device":[ { "csv-status": "complete", "csv-deviceId": "476b71d4-308b-3f38-807e-982e8360cb9d", "csv-deviceIP": "55.10.10.10", "csv-host-name": "BR10", "hostname": "BR10", "system_ip": "55.10.10.10", "site_id": "55", "gold_interface_name": "ge0/0", "gold_ip_and_mask": "31.2.0.10/24", "gold_default_ip": "31.2.0.1" } ], "isEdited":false, "isMasterEdited":false } ] }
Output:
{ "id": "push_file_template_configuration-89f5f490-45de-4dab-8f0f-23b2d09a2444" }
https://vmanage:443/dataservice/device/action/status/push_file_template_configuration-89f5f490-45de-4dab-8f0f-23b2d09a2444
Output:
"data": [ { "activity": [ "[17-May-2019 10:16:23 UTC] Configuring device with cli template: api-test", "[17-May-2019 10:16:23 UTC] Generating configuration from template", "[17-May-2019 10:16:23 UTC] Checking and creating device in vManage", "[17-May-2019 10:16:24 UTC] Device is online", "[17-May-2019 10:16:24 UTC] Updating device configuration in vManage", "[17-May-2019 10:16:25 UTC] Pushing configuration to device, vManage Transaction Id: 2019-05-17T10:16:25.415000+00:00", "[17-May-2019 10:16:25 UTC] Verification of configuration push may take several minutes", "[17-May-2019 10:18:27 UTC] Template successfully attached to device" ], "statusType": "push_file_template_configuration", "local-system-ip": "55.10.10.10", "vmanageIP": "10.0.0.1", "system-ip": "55.10.10.10", "site-id": "5510", "host-name": "BR10", "deviceID": "476b71d4-308b-3f38-807e-982e8360cb9d", "uuid": "476b71d4-308b-3f38-807e-982e8360cb9d", "@rid": 3406, "statusId": "success", "currentActivity": "Done - Push CLI Template Configuration",
https://vmanage:443/dataservice/device/sync_status
Input:
-
Output:
{ "device-model": "vedge-cloud", "syncCompleted": 1558104382742, "local-system-ip": "55.10.10.10", "syncState": "Completed", "host-name": "BR10", "deviceId": "55.10.10.10", "uuid": "476b71d4-308b-3f38-807e-982e8360cb9d", "syncScheduled": 0, "layoutLevel": 4, "syncQueued": 1558104381441, "_id": 2242, "reachability": "reachable" },
I hope this helps.
08-12-2023 08:43 AM
Is it possible to attach a new feature template to an existing device template and then add the device info in one call?
08-14-2023 03:23 AM
It's not possible to do it in one API call.
12-07-2023 01:31 PM
Hi tzarski,
Can we create a cli template using API call? If yes, then can you please show how? Thanks!!
//vpawar
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide