External applications

External applications can have the following characteristics:

  • They are not installed on the controller.

  • They use the REST APIs exported and advertised by the controller and by other applications.

  • They can be written in any language capable of establishing a secure HTTP connection, such as Java, C, C++, Python, Ruby, C#, bash, and so forth.

  • They can be deployed on a platform of choice outside of the controller platform.

  • They do not extend the Java APIs, REST APIs, or GUI of the controller.

External, web-based applications are suitable for relatively coarse-grained, infrequent and high-latency control interactions with the environment, such as path provisioning and flow inspections.

For example, an application based in the data center might be designed to move 5 terabytes of data from one end of the data center over a mesh of switches to the other side of data center without interrupting real-time applications such as voice and video:

  • The application can provision a path for the 5 terabytes of data by inspecting the topology and creating a route through the network for the large amount of data. This path-planning application can take time to plan the route, to lay down the flows within the network devices, and specify that the flows will last for a number of hours or days.

  • The application can then inform another application that the path has been configured and is ready for use. The second application can in turn start a backup of the data using the prepared path.

  • There is no latency requirement for the path-planning application and it therefore does not need to be running natively on the controller.

  • This kind of application can be programmed via a REST API.


[NOTE: ]

NOTE: This guide does not describe programming external applications. For information about the controller REST APIs that can interact with external applications, see Accessing the controller REST API documentation.


More information

Accessing the controller REST API documentation
About REST
Creating a REST API
Adding documentation about your REST API to RSdoc