Skip to content


A Controller in Nautobot is an abstraction meant to represent network or SDN (Software-Defined Networking) controllers. These may include, but are not limited to, wireless controllers, cloud-based network management systems, and other forms of central network control mechanisms.

Key Features

  • Flexible Modeling: Fits various network management scenarios, including SDN controllers, wireless controllers, and cloud-based services.
  • Device Management: Allows for the representation of relationships between controllers and the devices or device groups they manage.
  • Inventory Queries: Simplifies finding devices or groups managed by a specific controller, enhancing visibility and management.

Use Cases

These models support the representation of various use cases, including, but not limited to:

  • Cisco ACI
  • Panorama
  • Juniper MIST
  • Arista CloudVision
  • Meraki
  • Wireless Controllers (e.g., Ruckus, Cisco)
  • OpenStack

Using controllers enables answering inventory-related queries:

Find the controller for the given device group:

controller_managed_device_group_name = "DC-East-APIC"
controller = ControllerManagedDeviceGroup.objects.get(name=controller_managed_device_group_name).controller

Find the controller for the given device:

device_name = "DC-East-APIC-1"
controller = Device.objects.get(name=device_name).controller_managed_device_group.controller

List device groups managed by the controller:

controller_name = "Cisco ACI APIC - east"
device_groups = ControllerManagedDeviceGroup.objects.filter(controller__name=controller_name)

List devices managed by the controller:

controller_name = "Cisco ACI APIC - east"
devices = Device.objects.filter(controller_managed_device_group__controller__name=controller_name)

Base Fields

A controller is identified by a unique name and can include a description.

A controller can be deployed to either an individual Device or to a group of devices defined as a Device Redundancy Group via controller_device or controller_device_redundancy_group fields. These fields are mutually exclusive.

Each controller can also be connected to a Platform and a specific External Integration to define its connection to an external system.

A specific Status and Location are required for each controller.

For better organization and categorization, a Role, Tenant or tags can be assigned to the controller.

Controller Managed Device Group represents the connection between the controller and devices it manages. It allows for the organization of controlled devices into hierarchical groups for structured representation.

For more detailed information about model relations, please refer to the developer documentation.


Cisco ACI

name: Cisco ACI APIC - east
status: Active
controller_device: DC-East-APIC-1
location: DC-East
platform: cisco_apic

Cisco Meraki

name: Cisco Meraki SAAS
status: Active
controller_device: ~
location: Cloud Location
platform: cisco_meraki