/ #api #nsx 

Configuring NSX Edge Services in Async Mode via API

I was reading through the NSX API Guide recently and a section caught my attention: Configuring Edge Services in Async Mode.

When configuring edge services asynchronously, accepted commands return an Accepted status (HTTP response status code 202) and a jobId (or taskId). The advantage of the async mode is that APIs are returned very fast and actions are done behind the scene.

This asynchronous mode is working with any 4.0 service configuration URL for POST, PUT, and DELETE calls (edge deployment, services configuration, reboots and so on). To configure async mode, simply include ?async=true at the end of the request.

How To Configure A NSX Edge Service Asynchronously?

Let’s compare a request, with and without the async mode. The request below will create a TCP Service Monitor in “normal/sync” mode.

https://{{nsxmanager}}/api/4.0/edges/edge-1/loadbalancer/config/monitors

Create a service monitor for the load balancer in NSX Edge

The API call returned the following after completion :

  • HTTP response status code: 201 Created
  • Time: almost 8 seconds*

* This is a lab environment with limited resources; this length might not reflect the effective duration in a production infrastructure.

Let’s launch the same request, but asynchronously this time (I only changed some values in the request body, to create a service monitor with different values):

https://{{nsxmanager}}/api/4.0/edges/edge-1/loadbalancer/config/monitors?async=true

Create a service monitor in async mode

The API call finished this time with:

  • HTTP response status code: 202 Accepted (as opposed to the 201 Created above)

  • Time: 1 second

The HTTP response status code of 202 indicates the successful start of an asynchronous action. In addition to this code, the response headers contain the jobId which can be used to retrieve the status of the job.

Get the nsx api async job id in the response headers

To get the status of the task, you can check the status of the returned jobId. You can also query all jobs or only active ones (see the screenshot below).

Query the async job status in NSX

When querying the job status, the call returns the URI and ID of the resource and the status which can be one of the following.

  • SUCCESS

  • FAILED

  • QUEUED

  • RUNNING

  • ROLLBACK

Async Mode? Yes, but for what?

Although the example above is quite basic, it shows the benefits of asynchronous actions: APIs are returned very fast and other actions can be done in parallel. In a highly automated world, it is beneficial for automation workflows to continue while some actions are executed in background. Async actions can also help to build user interfaces that can live refresh.

Author

Romain

Staff Architect & Member of the CTO Ambassador Program at VMware, focusing on NSX and Cloud-Native Applications. He is a double VCDX (DCV and NV, #120), VCDX panelist, frequent VMUG/VMworld speaker and contributor to the community via this blog or social media (follow him on Twitter @woueb).