CloudEnterprise
Technical Information
Juniper Mist to NetBox Object Mapping
This document provides a comprehensive mapping of Juniper Mist object types to their corresponding NetBox object types, based on the integration implementation.
Object Type Mapping Table
| Juniper Mist Object | NetBox Object Type | Key Fields Mapped | Mapping Details |
|---|---|---|---|
| Site | Site | name → name | |
name → slug | |||
timezone → time_zone | |||
id → custom_fields.mist_id | Maps Mist sites (from listOrgSites) to NetBox sites with timezone and Mist site ID preserved. Site filtering via policy scope sites (default ["*"] = all). | ||
| Site (Unassigned) | Site | Static name / slug | Creates "Unassigned Mist Inventory" site for devices with invalid or missing site_id (UUID 00000000-0000-0000-0000-000000000000). |
| Device (Inventory, standalone) | Device | name or serial or "Unnamed" → name | |
serial → serial | |||
connected → status | |||
type → role | |||
model → device_type | |||
mac → custom_fields.mist_mac | Standalone (non–Virtual Chassis) inventory devices. Device type and role created from type and model. | ||
| Device (Inventory, VC member) | Device | vc_name + fpc_idx → name | |
module_stat[].serial → serial | |||
connected → status | |||
type → role | |||
module_stat[].model → device_type | |||
module_stat[].mac → custom_fields.mist_mac | |||
vc_mac → custom_fields.mist_vc_mac | |||
vc_role → custom_fields.mist_vc_role | |||
virtual_chassis + vc_position | Virtual Chassis member devices; one Device per member. Master identified by vc_role='master' or lowest fpc_idx. | ||
| Virtual Chassis (switch stack) | VirtualChassis | name → name | |
Key: vc_mac | Created for switches with type=="switch" and vc_mac starting with 0200. One VirtualChassis per unique vc_mac. | ||
| Device Type | DeviceType | model → model | |
model → slug | |||
type → custom_fields.mist_type | Created per model; for VC members, model comes from module_stat[].model. | ||
| Device Role | DeviceRole | type → name | |
type → slug | Mist device type (e.g. ap, switch, gateway) becomes NetBox device role. | ||
| Platform | Platform | Static → name "Junos", slug "junos" | Single platform for all Mist devices; linked to manufacturer. |
| Manufacturer | Manufacturer | Static → name "Juniper", slug "juniper" | Single manufacturer for all Mist devices. |
| Wireless LAN | WirelessLAN | ssid → ssid | |
enabled → status | |||
auth.type → auth_type | |||
auth → auth_cipher | |||
id → custom_fields.mist_wlan_id | |||
ap_ids → custom_fields.mist_ap_ids | |||
apply_to → custom_fields.mist_ap_scope | |||
wxtag_ids → custom_fields.mist_wxtag_ids (when apply_to=wxtags) | WLANs from listSiteWlansDerived; one entity per unique (wlan_id, site_id, ssid). Includes WLANs with no serving devices. After device–WLAN matching, mist_ap_mac_addresses_serving_this holds JSON array of AP MACs. | ||
| Interface | Interface | From device stats: if_stat / ip_stat.ips | |
key → name | |||
up → enabled | |||
port_id → custom_fields.mist_interface_port_id | |||
Heuristic from name → type | Built from getSiteDeviceStats(..., fields="ports"). For Virtual Chassis, interface assigned to member by FPC in name (e.g. ge-1/0/44 → fpc 1). | ||
| IP Address | IPAddress | From device stats interface IPs | |
address → address | |||
Interface → assigned_object_interface | |||
status "active" | Created when SKIP_IP_ADDRESSES is false. Management IP (matching device ip) set as device primary_ip4 or primary_ip6. | ||
| MAC Address | MACAddress | From device stats ports (port_id → port_mac / mac for vme) | |
Or freestanding from inventory mac | Interface MACs from stats; device MACs created as freestanding when not attached to an interface. Internal ports cbp0, pip0, jsrv, bme0 skipped. |
Field Mapping Details
Device Status Mapping
| Mist Connection Status | NetBox Status |
|---|---|
true (connected) | active |
false (disconnected) | offline |
Wireless LAN Status Mapping
| Mist WLAN Status | NetBox Status |
|---|---|
true (enabled) | active |
false (disabled) | disabled |
Authentication Type Mapping
| Mist Auth Type | NetBox Auth Type |
|---|---|
open | open |
psk | wpa-personal |
psk-tkip | wpa-personal |
psk-wpa2-tkip | wpa-personal |
eap | wpa-enterprise |
eap192 | wpa-enterprise |
wep | wep |
| Any other value | Unknown |
Authentication Cipher Mapping
| Mist Auth Type | Mist Pairwise Ciphers | NetBox Auth Cipher |
|---|---|---|
eap192 | Any | aes |
psk-tkip | psk-wpa2-tkip | Any | tkip |
wep | Any | auto |
open | Any | None |
psk | eap | Contains "tkip" | tkip |
psk | eap | Contains "ccmp" or "wpa3" | aes |
psk | eap | No recognized cipher | None |
| Unknown auth_type | — | Integration raises |
Cipher uses Mist auth.pairwise list (e.g. wpa2-ccmp, wpa2-tkip, wpa3).
Interface Type Heuristics
| Interface Name Pattern | NetBox Type |
|---|---|
ge-* | 1000base-t |
vme* or VLAN* | virtual |
| Other | other |
Site Assignment Logic
- Allowed sites: From policy scope
sites(list of site names).["*"]or empty means all sites. - Valid site: Device
site_idpresent in allowed site IDs → assign to that NetBox site. - Unassigned fallback: Missing or invalid
site_id(e.g.00000000-0000-0000-0000-000000000000) or site not in allowed list → assign to "Unassigned Mist Inventory" site. - Inventory filtering: Only devices in allowed sites (or unassigned) are ingested; same for
devices/searchwhen building device–WLAN mapping.
WLAN Scope and Custom Fields
WLANs are always scoped to a site (scope_site). Mist scope is stored in custom fields:
| Mist apply_to | Custom Field Usage |
|---|---|
site | Standard site scope |
wxtags | mist_wxtag_ids (JSON array) |
aps | mist_ap_ids (JSON array) |
None | Site scope |
Virtual Chassis Detection
- Condition:
type == "switch"andvc_macstarts with0200(Juniper VC MAC prefix). - VirtualChassis: One per unique
vc_mac; name from devicename. - Member devices: Built from
getSiteDeviceStatsmodule_stat; member name\{vc_name\}-member-\{fpc_idx\}; master byvc_role='master'or lowestfpc_idx.
Device–WLAN Matching
- Source:
devices/search(type=ap, duration=1h) gives per-devicewlans[](id, ssid). - Uniqueness: WLANs keyed by
(wlan_id, site_id, ssid); only WLANs present inlistSiteWlansDerivedfor that site are used. - Device custom field:
mist_wlans_served(object, multiple) references the WirelessLAN entities the device serves. - WLAN custom field:
mist_ap_mac_addresses_serving_this(JSON array of AP MAC addresses) populated after matching.
Custom Fields
| Custom Field | Object Type | Purpose |
|---|---|---|
mist_id | Site | Mist site ID |
mist_type | Device Type | Mist device type (ap, switch, etc.) |
mist_mac | Device | Mist device MAC |
mist_vc_mac | Device | Virtual Chassis MAC (VC members only) |
mist_vc_role | Device | VC role: master, backup, or empty (VC members only) |
mist_wlan_id | Wireless LAN | Mist WLAN ID |
mist_ap_ids | Wireless LAN | JSON array of AP IDs |
mist_ap_scope | Wireless LAN | apply_to (site, wxtags, aps) |
mist_wxtag_ids | Wireless LAN | JSON array of WxTag IDs when apply_to=wxtags |
mist_ap_mac_addresses_serving_this | Wireless LAN | JSON array of AP MAC addresses serving this WLAN |
mist_wlans_served | Device | Object ref(s) to Wireless LAN(s) served by this device |
mist_interface_port_id | Interface | Mist port ID for the interface |
Policy Configuration
- BOOTSTRAP (optional): When true, only static entities (custom fields, manufacturer, platform) are created; no Mist API calls.
- MIST_APITOKEN (required when not BOOTSTRAP): Mist API token.
- MIST_ORG_ID (required when not BOOTSTRAP): Mist organization ID.
- SKIP_IP_ADDRESSES (optional, default true): When true, IP address entities are not created.
- Scope – sites (optional): List of site names to include; default
["*"]for all sites. Invalid or missing names cause validation to fail after fetching sites.
Tags and Metadata
All created entities are tagged with:
junipermistdiscovered
Optional unique tag: mist-\{org_id\} when not in bootstrap mode.
API and Behavior Notes
- APIs used:
listOrgSites,getOrgInventory,getSiteDeviceStats(withfields="ports"),searchOrgDevices(type=ap),listSiteWlansDerived. - Rate limiting: Custom retry (e.g.
MistCustomRetry) for 429, 5xx withRetry-Aftersupport. - Device naming: Standalone:
nameorserialor "Unnamed". VC members:\{vc_name\}-member-\{fpc_idx\}. - WLAN uniqueness: Deduplicated by (wlan_id, site_id, ssid). WLANs with no serving devices are still created from site-derived WLANs.
- Interfaces: Only devices with a valid
site_id(and in allowed sites) have stats fetched; unassigned devices do not get interfaces or IPs from this integration.