Source of truth and network automation platform for network infrastructure management.
—
Virtual infrastructure management including virtual machines, cloud services, and wireless networks. Extends the DCIM model to virtual and cloud environments.
Virtual machine management similar to physical devices.
class VirtualMachine:
"""
Virtual machines with similar functionality to physical devices.
Attributes:
name (str): VM name
status (Status): VM status
cluster (Cluster): Host cluster
tenant (Tenant): Tenant assignment
platform (Platform): VM platform/OS
primary_ip4 (IPAddress): Primary IPv4 address
primary_ip6 (IPAddress): Primary IPv6 address
vcpus (int): Virtual CPU count
memory (int): Memory in MB
disk (int): Disk space in GB
role (Role): VM role
comments (str): Comments
local_context_data (dict): Local configuration context
tags (list): Associated tags
"""
class VMInterface:
"""
Virtual machine network interfaces.
Attributes:
virtual_machine (VirtualMachine): Parent VM
name (str): Interface name
enabled (bool): Whether interface is enabled
parent (VMInterface): Parent interface
bridge (VMInterface): Bridge interface
mtu (int): Maximum transmission unit
mac_address (str): MAC address
description (str): Interface description
mode (str): Interface mode (access/tagged/trunk)
untagged_vlan (VLAN): Untagged VLAN
tagged_vlans (list): Tagged VLANs
vrf (VRF): VRF assignment
ip_addresses (list): Assigned IP addresses
tags (list): Associated tags
"""Cloud service management (implementation varies by cloud provider).
# Cloud models are provider-specific and may include:
# - Cloud accounts and regions
# - Cloud instances and services
# - Cloud networks and subnets
# - Cloud storage and databases
# - Cloud load balancers and firewallsWireless network infrastructure management.
# Wireless models may include:
# - Wireless controllers
# - Access points
# - Wireless networks/SSIDs
# - Wireless clients
# - RF coverage and planningfrom nautobot.virtualization.models import VirtualMachine, VMInterface
from nautobot.extras.models import Status
# Create virtual machine
active_status = Status.objects.get(name="Active")
vm = VirtualMachine.objects.create(
name="web-server-01",
status=active_status,
vcpus=4,
memory=8192, # 8GB
disk=100, # 100GB
comments="Web server VM"
)
# Create VM interface
vm_interface = VMInterface.objects.create(
virtual_machine=vm,
name="eth0",
enabled=True,
description="Primary network interface"
)
# Assign IP address
from nautobot.ipam.models import IPAddress, Namespace
namespace = Namespace.objects.get(name="Global")
ip = IPAddress.objects.create(
address="192.168.100.10/24",
namespace=namespace,
status=active_status,
assigned_object=vm_interface
)
vm.primary_ip4 = ip
vm.save()# Get all VMs
all_vms = VirtualMachine.objects.all()
# Get VMs by status
active_vms = VirtualMachine.objects.filter(status__name="Active")
# Get VMs by resource requirements
high_memory_vms = VirtualMachine.objects.filter(memory__gte=16384)
# Get VM interfaces
vm_interfaces = VMInterface.objects.filter(virtual_machine=vm)
# Get VMs with IP addresses
vms_with_ips = VirtualMachine.objects.exclude(primary_ip4__isnull=True)Install with Tessl CLI
npx tessl i tessl/pypi-nautobot@2.4.1