lex-nautobot
Legion Extension for Nautobot — a network source of truth and automation platform.
Installation
gem 'lex-nautobot'
Usage
client = Legion::Extensions::Nautobot::Client.new(
url: 'https://nautobot.example.com',
token: 'your-api-token'
)
# DCIM
client.list_devices
client.get_device(id: 'uuid')
client.create_device(name: 'switch-01', device_type: 'uuid', location: 'uuid', status: 'active')
# IPAM
client.list_prefixes
client.list_ip_addresses(namespace: 'uuid')
client.create_prefix(prefix: '10.0.0.0/24', namespace: 'uuid', status: 'active')
# Circuits
client.list_circuits
client.list_providers
# Virtualization
client.list_virtual_machines
client.list_clusters
# Extras
client.list_jobs
client.run_job(id: 'job-uuid', data: { key: 'value' })
client.graphql_query(query: '{ devices { name } }')
# Cloud, VPN, Wireless
client.list_cloud_accounts
client.list_vpn_tunnels
client.list_wireless_networks
Read-Only Mode
client = Legion::Extensions::Nautobot::Client.new(
url: 'https://nautobot.example.com',
token: 'your-api-token',
read_only: true
)
client.list_devices # works
client.create_device(...) # raises ReadOnlyError
Runners
| Runner | Nautobot App | Key Resources |
|---|---|---|
| Dcim | /api/dcim/ |
devices, locations, racks, interfaces, cables, manufacturers |
| Ipam | /api/ipam/ |
prefixes, IP addresses, VLANs, VRFs, namespaces |
| Circuits | /api/circuits/ |
providers, circuits, circuit types, terminations |
| Tenancy | /api/tenancy/ |
tenants, tenant groups |
| Virtualization | /api/virtualization/ |
clusters, virtual machines, VM interfaces |
| Extras | /api/extras/ |
tags, statuses, jobs, config contexts, webhooks, GraphQL |
| Users | /api/users/ |
users, groups, tokens, permissions |
| Cloud | /api/cloud/ |
cloud accounts, networks, services |
| Vpn | /api/vpn/ |
VPNs, tunnels, profiles, terminations |
| Wireless | /api/wireless/ |
radio profiles, wireless networks |
License
MIT