Skip to main content
CloudEnterprise

Technical Information

VMware vCenter to NetBox Object Mapping

This document provides a comprehensive mapping of VMware vCenter object types to their corresponding NetBox object types, based on the integration implementation.

Object Type Mapping Table

VMware vCenter ObjectNetBox Object TypeKey Fields MappedMapping Details
DatacenterClusterGroupnamename
description
tagsOne ClusterGroup per datacenter. Filtering via scope datacenters (default all).
ClusterClusternamename
datacentergroup (ClusterGroup)
hosts[] → scope
moidcustom_fields.vcenter_cluster_moidCluster type "VMware vSphere". Scope: single site → scope_site; multiple sites → new SiteGroup and scope_site_group. Standalone hosts → cluster named \{datacenter}-StandaloneHostsCluster\.
SiteSiteFrom host tag netbox_site:siteNamename
Default → "DefaultSite"Sites discovered from host tags (REST API tagging). Unique site names from tags; if none, one site "DefaultSite".
SiteGroupSiteGroupname "SiteGroup-{cluster.name}"
description
Child sites linked via parent_site_groupsCreated only when a cluster spans multiple sites (hosts in different netbox_site tags). Each child site gets parent_site_groups referencing this SiteGroup.
ESXi HostDevicesummary.config.namename
summary.hardware.vendormanufacturer
summary.hardware.modeldevice_type.model
hardware.systemInfo.serialNumberserial
config.product.fullNameplatform.name
runtime.powerStatestatus
Tag netbox_site:*site
Cluster → cluster
moidcustom_fields.vcenter_host_moid
datacentercustom_fields.vcenter_datacenterRole "ESXi Host". Manufacturer overwritten per host from hardware.vendor (single manufacturer in collection). Primary IPv4/IPv6 set from first interface IPs.
Host Device TypeDeviceTypesummary.hardware.modelmodel
manufacturer (from host vendor)One device type per model.
Host PlatformPlatformconfig.product.fullNamenameESXi product full name (e.g. "VMware ESXi 7.0.0").
Host RoleDeviceRoleStatic "ESXi Host"Single role for all hosts.
Host InterfaceInterfacevNIC/pNIC devicename
spec.mac / pnic.macprimary_mac_address (uppercase)
enabled True
type "other"From networkConfig.vnic and networkInfo.pnic. IPs created as separate IPAddress entities (vNIC spec.ip → CIDR). Key: (host.name, interface.name).
Virtual MachineVirtualMachinenamename
config.uuidcustom_fields.vcenter_vm_uuid
runtime.powerStatestatus
config.hardware.numCPUvcpus
config.hardware.memoryMBmemory
config.guestFullNameplatform.name
clustercluster
Host's site → site
datacentercustom_fields.vcenter_datacenterRole "Virtual Machine". Primary IPv4/IPv6 from first VM interface IPs (guest.net).
VM RoleDeviceRoleStatic "Virtual Machine"Single role for all VMs.
VM PlatformPlatformconfig.guestFullNamenameGuest OS full name.
VM InterfaceVMInterfacedeviceInfo.labelname
connectable.connectedenabled
macAddressprimary_mac_address (uppercase)
deviceInfo.summarydescription
Virtual switch MTU → mtuMTU from standard vSwitch or DVS (get_virtual_switch_mtu). Key: (vm.name, deviceInfo.label).
Virtual DiskVirtualDiskdeviceInfo.labelname
capacityInKB // 1024 → size (MB)
backing.datastore.namecustom_fields.vcenter_datastore_name
backing.fileNamecustom_fields.vcenter_vmdk_pathOnly FileBackingInfo disks; datastore/fileName as custom fields.
IP AddressIPAddressHost: vNIC spec.ip.ipAddress + subnet → CIDR
VM: guest.net[].ipConfig.ipAddress[] + subnetMask → CIDR
Assigned to interface or vm_interfaceSubnet mask converted to prefix length; default /32 if no mask.
MAC AddressMACAddressmacAddress / spec.macmac_address (uppercase)
Assigned to interface or vm_interfaceOne MAC entity per host or VM interface that has a MAC.
Cluster TypeClusterTypeStatic "VMware vSphere"Single cluster type for all clusters.
ManufacturerManufacturerInitial "VMware"; then per host summary.hardware.vendorbuild_manufacturer creates "VMware"; build_hosts overwrites with each host's vendor (single manufacturer retained).

Field Mapping Details

Host Status Mapping

Host power_state in the integration is set only to "poweredOn" or "poweredOff" from runtime.powerState.

vCenter Power StateNetBox Status
poweredOnactive
poweredOff (or any other)offline

VM Status Mapping

vCenter Power StateNetBox Status
poweredOnactive
poweredOffoffline
suspendedstaged
Any other valueoffline

Interface Type Mapping

vCenter InterfaceNetBox Type
Host vNIC / pNICother
VM network adaptervirtual (VMInterface)

Site Discovery Logic

  1. Tag-based: Host tags fetched via vCenter REST API (cis/tagging). First tag matching netbox_site:* gives site name (value after colon, trimmed).
  2. Default: Hosts without such a tag are assigned to site "DefaultSite".
  3. Sites created: One NetBox Site per unique site name discovered from tags; if none, a single Site "DefaultSite" is created.

Cluster Scoping Logic

Host site distributionCluster scope
All hosts in one sitescope_site (that site)
Hosts in multiple sitesNew SiteGroup "SiteGroup-{cluster.name}" created; cluster uses scope_site_group; each child site gets parent_site_groups (object ref to SiteGroup).
No site info (all DefaultSite)scope_site (DefaultSite)

Standalone hosts (ComputeResource but not ClusterComputeResource) are grouped into a synthetic cluster per datacenter: name \{datacenter}-StandaloneHostsCluster\.

IP Address Processing

  • Host: vNIC spec.ip.ipAddress and spec.ip.subnetMask converted to CIDR (prefix length from mask); pNICs have no IPs.
  • VM: From vm.guest.net[].ipConfig.ipAddress[]; subnetMask used for CIDR when present, else /32.
  • Primary IP: First IPv4 and first IPv6 (by iteration order) on host or VM set as primary_ip4 / primary_ip6.

MTU Discovery (VM interfaces)

  • Standard vSwitch: Host networkConfig.portgroup → vswitchName → networkInfo.vswitch → mtu.
  • Distributed vSwitch: device.backing (DistributedVirtualPortBackingInfo) → host.configManager.dvsManager → switch by uuid → config.maxMtu.
  • Fallback: None if not found.

Policy Configuration

  • BOOTSTRAP (optional): When true, only static entities (custom fields, manufacturer) are created; no vCenter connection.
  • VCENTER_HOST (required when not BOOTSTRAP): vCenter hostname or IP.
  • VCENTER_USER (required when not BOOTSTRAP): Username for authentication.
  • VCENTER_PWD (required when not BOOTSTRAP): Password for authentication.
  • SKIP_SSL (optional): If true, SSL certificate validation is disabled for the vCenter connection.
  • Scope – datacenters (optional): List of datacenter names to ingest; default all. Use ["*"] for wildcard. Invalid names cause validation to fail after fetching datacenters.

Connection uses pyVmomi SmartConnect with retry (3 attempts). Proxy support via HTTPS_PROXY/HTTP_PROXY.

Custom Fields

Custom FieldObject TypePurpose
vcenter_vm_uuidVirtual MachineVM UUID from vCenter (config.uuid)
vcenter_datastore_nameVirtual DiskDatastore name for the disk backing
vcenter_vmdk_pathVirtual DiskVMDK file path (backing.fileName)
vcenter_host_moidDevice (ESXi host)Host Managed Object ID (MOID)
vcenter_cluster_moidClusterCluster MOID when available
vcenter_datacenterDevice, Virtual MachineDatacenter name containing the object
parent_site_groupsSiteUsed when cluster spans multiple sites; links site to SiteGroup(s). Must exist in NetBox if multi-site clusters are used.

Tags and Metadata

All created entities are tagged with:

  • vmware
  • vcenter
  • discovered

Site names are derived from host tags (netbox_site:siteName); other tag values are not copied onto entities.

API and Behavior Notes

  • APIs: pyVmomi (SOAP) for inventory and properties; vCenter REST API for tagging (cis/session, tagging/tag-association, tagging/tag/id).
  • Data flow: Fetch datacenters and hosts (with tags) → fetch clusters and VMs → build ClusterGroups, Sites, ClusterType → build Clusters (with SiteGroups when multi-site) → build Hosts (devices, interfaces, IPs, MACs) → build VMs (interfaces, disks, IPs, MACs).
  • Manufacturer: One manufacturer entity; set to "VMware" in bootstrap, then overwritten by each host's hardware.vendor during host build (typically same vendor across hosts).
  • Entity order: Custom fields, manufacturer (bootstrap only), cluster_type, cluster_groups, site_groups, sites, clusters, devices, virtual_machines, interfaces, vm_interfaces, mac_addresses, ip_addresses, virtual_disks. DeviceType, DeviceRole, and Platform are not emitted as standalone entities; they are embedded in Device and VirtualMachine.