# Netbox Topology Views Plugin   Create topology views/maps from your devices in NetBox. The connections are based on the cables you created in NetBox. Support to filter on name, site, tag and device role. Options to export to xml (for draw.io/diagrams.net) or png. ## Preview   ## Install **_NOTE:_** For Docker please see: [Docker install](https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins) **_NOTE:_** Add `RUN mkdir -p /opt/netbox/netbox/static/netbox_topology_views/img` to the Dockerfile-Plugins file to create the image folder. The plugin is available as a Python package and can be installed with pip. First run `source /opt/netbox/venv/bin/activate` to enter the Python virtual environment. Then run: ```bash cd /opt/netbox/netbox pip3 install netbox-topology-views python3 manage.py migrate netbox_topology_views python3 manage.py collectstatic --no-input ``` To ensure NetBox Topology Views plugin is automatically re-installed during future upgrades, create a file named `local_requirements.txt` (if not already existing) in the NetBox root directory (alongside `requirements.txt`) and list the `netbox-topology-views` package: ```no-highlight echo netbox-topology-views >> local_requirements.txt ``` Once installed, the plugin needs to be enabled in your `configuration.py`: ```python PLUGINS = ["netbox_topology_views"] ``` Finally, restart NetBox: ```no-highlight systemctl restart netbox ``` ### Versions > [!NOTE] > If the version of netbox is not listed here the plugin will most likely not work. Remove the plugin if you want to update netbox before this plugin has released an update for that netbox version. | netbox version | netbox-topology-views version | | -------------- | ----------------------------- | | = 4.3.X | = v4.2.1 | | = 4.2.1 | = v4.2.1 | | = 4.2.0 | = v4.2.0 | | = 4.1.X | = v4.1.0 | | = 4.0.X | = v4.0.0 | | = 3.7.0 | = v3.9.0 | | = 3.6.4 | = v3.8.1 | | = 3.6.0 | = v3.7.0 | | = 3.5.0 | = v3.6.2 | ### Update Run `pip install netbox-topology-views --upgrade` in your venv. Run `python3 manage.py migrate netbox_topology_views` Run `python3 manage.py collectstatic --no-input` Clear you browser cache. ## Configure ### Individual Options All individual options can be assigned a default value per user directly in the plugin. The default value can be overridden on the filter page.  The remaining options must be configured in the `PLUGINS_CONFIG` section of your `netbox/configuration.py`. Example: ``` PLUGINS_CONFIG = { 'netbox_topology_views': { 'static_image_directory': 'netbox_topology_views/img', 'allow_coordinates_saving': True, 'always_save_coordinates': True } } ``` | Setting | Default value | Description | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | static_image_directory | netbox_topology_views/img | (str or pathlib.Path) Specifies the location that images will be loaded from by default. Must be within `STATIC_ROOT` | | allow_coordinates_saving | False | (bool) Set to true if you want to enable the ability to save the coordinates. | | always_save_coordinates | False | (bool) Set if you want to enable the option to save coordinates by default. Setting allow_coordinates_saving to true is mandatory. | ### Custom field: coordinates There is also support for custom fields. >**_Note:_** The custom field "coordinates" is deprecated and will be removed in the future. Please use Coordinate Groups instead. If you create a custom field "coordinates" for "dcim > device" and "Circuits > circuit" with type "text" and name "coordinates" you will see the same layout every time. It is recommended to set this field to "UI visibility" "Hidden" and let the plugin manage it in the background. The coordinates are stored as: "X;Y". > Please read the "Configure" chapter to set the `allow_coordinates_saving` option to True. You might also set the `always_save_coordinates` option to True. ### Convert custom field to Coordinate Groups Please note that values stored in the custom field "coordinates" are not being converted to Coordinate Groups automatically. A pragmatic way to do this conversion yourself is as follows: + Navigate to "Topology" > "Filters". + Select "Show Unconnected" and "Show Cables". + Leave all other filter settings alone. We want all entries to be displayed! + Click "Search" and wait for the results to be displayed + Select all nodes. This can be done by holding down the Shift key and dragging a frame around all icons with the left mouse button. + Drag the selection a tiny bit to the side. This causes all coordinates for all devices to be stored in the "default" group. > **_Hint_**: Don't wait too long after clicking an icon in order to drag. If you hold the mouse button for too long before dragging starts, the selection is reset._ + Storing the values might take some time, depending on the number of devices. Please be patient and check "Coordinates" in order to make sure that everthing has been stored. + It is save to delete the custom field now. ### Custom Images To change image with associated device use the `Images` page - it allows to map a device role with an image found in the NetBox static directory (defined by the plugin config `static_image_directory` which defaults to `netbox_topology_views/img`). You can also upload you own custom images to there - these images will automatically be used for a device (if it does not already have a specified image in the settings) if their name is the device role slug.  ## Use Go to the plugins tab in the navbar and click topology or go to `$NETBOX_URL/plugins/netbox_topology_views/` to view your topologies Select your options for the topology view: 