1from django.urls import path 2 3from extras.views import ObjectChangeLogView, ObjectJournalView 4from ipam.views import ServiceEditView 5from utilities.views import SlugRedirectView 6from . import views 7from .models import * 8 9app_name = 'dcim' 10urlpatterns = [ 11 12 # Regions 13 path('regions/', views.RegionListView.as_view(), name='region_list'), 14 path('regions/add/', views.RegionEditView.as_view(), name='region_add'), 15 path('regions/import/', views.RegionBulkImportView.as_view(), name='region_import'), 16 path('regions/edit/', views.RegionBulkEditView.as_view(), name='region_bulk_edit'), 17 path('regions/delete/', views.RegionBulkDeleteView.as_view(), name='region_bulk_delete'), 18 path('regions/<int:pk>/', views.RegionView.as_view(), name='region'), 19 path('regions/<int:pk>/edit/', views.RegionEditView.as_view(), name='region_edit'), 20 path('regions/<int:pk>/delete/', views.RegionDeleteView.as_view(), name='region_delete'), 21 path('regions/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='region_changelog', kwargs={'model': Region}), 22 23 # Site groups 24 path('site-groups/', views.SiteGroupListView.as_view(), name='sitegroup_list'), 25 path('site-groups/add/', views.SiteGroupEditView.as_view(), name='sitegroup_add'), 26 path('site-groups/import/', views.SiteGroupBulkImportView.as_view(), name='sitegroup_import'), 27 path('site-groups/edit/', views.SiteGroupBulkEditView.as_view(), name='sitegroup_bulk_edit'), 28 path('site-groups/delete/', views.SiteGroupBulkDeleteView.as_view(), name='sitegroup_bulk_delete'), 29 path('site-groups/<int:pk>/', views.SiteGroupView.as_view(), name='sitegroup'), 30 path('site-groups/<int:pk>/edit/', views.SiteGroupEditView.as_view(), name='sitegroup_edit'), 31 path('site-groups/<int:pk>/delete/', views.SiteGroupDeleteView.as_view(), name='sitegroup_delete'), 32 path('site-groups/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='sitegroup_changelog', kwargs={'model': SiteGroup}), 33 34 # Sites 35 path('sites/', views.SiteListView.as_view(), name='site_list'), 36 path('sites/add/', views.SiteEditView.as_view(), name='site_add'), 37 path('sites/import/', views.SiteBulkImportView.as_view(), name='site_import'), 38 path('sites/edit/', views.SiteBulkEditView.as_view(), name='site_bulk_edit'), 39 path('sites/delete/', views.SiteBulkDeleteView.as_view(), name='site_bulk_delete'), 40 path('sites/<int:pk>/', views.SiteView.as_view(), name='site'), 41 path('sites/<slug:slug>/', SlugRedirectView.as_view(), kwargs={'model': Site}), 42 path('sites/<int:pk>/edit/', views.SiteEditView.as_view(), name='site_edit'), 43 path('sites/<int:pk>/delete/', views.SiteDeleteView.as_view(), name='site_delete'), 44 path('sites/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='site_changelog', kwargs={'model': Site}), 45 path('sites/<int:pk>/journal/', ObjectJournalView.as_view(), name='site_journal', kwargs={'model': Site}), 46 47 # Locations 48 path('locations/', views.LocationListView.as_view(), name='location_list'), 49 path('locations/add/', views.LocationEditView.as_view(), name='location_add'), 50 path('locations/import/', views.LocationBulkImportView.as_view(), name='location_import'), 51 path('locations/edit/', views.LocationBulkEditView.as_view(), name='location_bulk_edit'), 52 path('locations/delete/', views.LocationBulkDeleteView.as_view(), name='location_bulk_delete'), 53 path('locations/<int:pk>/', views.LocationView.as_view(), name='location'), 54 path('locations/<int:pk>/edit/', views.LocationEditView.as_view(), name='location_edit'), 55 path('locations/<int:pk>/delete/', views.LocationDeleteView.as_view(), name='location_delete'), 56 path('locations/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='location_changelog', kwargs={'model': Location}), 57 58 # Rack roles 59 path('rack-roles/', views.RackRoleListView.as_view(), name='rackrole_list'), 60 path('rack-roles/add/', views.RackRoleEditView.as_view(), name='rackrole_add'), 61 path('rack-roles/import/', views.RackRoleBulkImportView.as_view(), name='rackrole_import'), 62 path('rack-roles/edit/', views.RackRoleBulkEditView.as_view(), name='rackrole_bulk_edit'), 63 path('rack-roles/delete/', views.RackRoleBulkDeleteView.as_view(), name='rackrole_bulk_delete'), 64 path('rack-roles/<int:pk>/', views.RackRoleView.as_view(), name='rackrole'), 65 path('rack-roles/<int:pk>/edit/', views.RackRoleEditView.as_view(), name='rackrole_edit'), 66 path('rack-roles/<int:pk>/delete/', views.RackRoleDeleteView.as_view(), name='rackrole_delete'), 67 path('rack-roles/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rackrole_changelog', kwargs={'model': RackRole}), 68 69 # Rack reservations 70 path('rack-reservations/', views.RackReservationListView.as_view(), name='rackreservation_list'), 71 path('rack-reservations/add/', views.RackReservationEditView.as_view(), name='rackreservation_add'), 72 path('rack-reservations/import/', views.RackReservationImportView.as_view(), name='rackreservation_import'), 73 path('rack-reservations/edit/', views.RackReservationBulkEditView.as_view(), name='rackreservation_bulk_edit'), 74 path('rack-reservations/delete/', views.RackReservationBulkDeleteView.as_view(), name='rackreservation_bulk_delete'), 75 path('rack-reservations/<int:pk>/', views.RackReservationView.as_view(), name='rackreservation'), 76 path('rack-reservations/<int:pk>/edit/', views.RackReservationEditView.as_view(), name='rackreservation_edit'), 77 path('rack-reservations/<int:pk>/delete/', views.RackReservationDeleteView.as_view(), name='rackreservation_delete'), 78 path('rack-reservations/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rackreservation_changelog', kwargs={'model': RackReservation}), 79 path('rack-reservations/<int:pk>/journal/', ObjectJournalView.as_view(), name='rackreservation_journal', kwargs={'model': RackReservation}), 80 81 # Racks 82 path('racks/', views.RackListView.as_view(), name='rack_list'), 83 path('rack-elevations/', views.RackElevationListView.as_view(), name='rack_elevation_list'), 84 path('racks/add/', views.RackEditView.as_view(), name='rack_add'), 85 path('racks/import/', views.RackBulkImportView.as_view(), name='rack_import'), 86 path('racks/edit/', views.RackBulkEditView.as_view(), name='rack_bulk_edit'), 87 path('racks/delete/', views.RackBulkDeleteView.as_view(), name='rack_bulk_delete'), 88 path('racks/<int:pk>/', views.RackView.as_view(), name='rack'), 89 path('racks/<int:pk>/edit/', views.RackEditView.as_view(), name='rack_edit'), 90 path('racks/<int:pk>/delete/', views.RackDeleteView.as_view(), name='rack_delete'), 91 path('racks/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rack_changelog', kwargs={'model': Rack}), 92 path('racks/<int:pk>/journal/', ObjectJournalView.as_view(), name='rack_journal', kwargs={'model': Rack}), 93 94 # Manufacturers 95 path('manufacturers/', views.ManufacturerListView.as_view(), name='manufacturer_list'), 96 path('manufacturers/add/', views.ManufacturerEditView.as_view(), name='manufacturer_add'), 97 path('manufacturers/import/', views.ManufacturerBulkImportView.as_view(), name='manufacturer_import'), 98 path('manufacturers/edit/', views.ManufacturerBulkEditView.as_view(), name='manufacturer_bulk_edit'), 99 path('manufacturers/delete/', views.ManufacturerBulkDeleteView.as_view(), name='manufacturer_bulk_delete'), 100 path('manufacturers/<int:pk>/', views.ManufacturerView.as_view(), name='manufacturer'), 101 path('manufacturers/<int:pk>/edit/', views.ManufacturerEditView.as_view(), name='manufacturer_edit'), 102 path('manufacturers/<int:pk>/delete/', views.ManufacturerDeleteView.as_view(), name='manufacturer_delete'), 103 path('manufacturers/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='manufacturer_changelog', kwargs={'model': Manufacturer}), 104 105 # Device types 106 path('device-types/', views.DeviceTypeListView.as_view(), name='devicetype_list'), 107 path('device-types/add/', views.DeviceTypeEditView.as_view(), name='devicetype_add'), 108 path('device-types/import/', views.DeviceTypeImportView.as_view(), name='devicetype_import'), 109 path('device-types/edit/', views.DeviceTypeBulkEditView.as_view(), name='devicetype_bulk_edit'), 110 path('device-types/delete/', views.DeviceTypeBulkDeleteView.as_view(), name='devicetype_bulk_delete'), 111 path('device-types/<int:pk>/', views.DeviceTypeView.as_view(), name='devicetype'), 112 path('device-types/<int:pk>/edit/', views.DeviceTypeEditView.as_view(), name='devicetype_edit'), 113 path('device-types/<int:pk>/delete/', views.DeviceTypeDeleteView.as_view(), name='devicetype_delete'), 114 path('device-types/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='devicetype_changelog', kwargs={'model': DeviceType}), 115 path('device-types/<int:pk>/journal/', ObjectJournalView.as_view(), name='devicetype_journal', kwargs={'model': DeviceType}), 116 117 # Console port templates 118 path('console-port-templates/add/', views.ConsolePortTemplateCreateView.as_view(), name='consoleporttemplate_add'), 119 path('console-port-templates/edit/', views.ConsolePortTemplateBulkEditView.as_view(), name='consoleporttemplate_bulk_edit'), 120 path('console-port-templates/rename/', views.ConsolePortTemplateBulkRenameView.as_view(), name='consoleporttemplate_bulk_rename'), 121 path('console-port-templates/delete/', views.ConsolePortTemplateBulkDeleteView.as_view(), name='consoleporttemplate_bulk_delete'), 122 path('console-port-templates/<int:pk>/edit/', views.ConsolePortTemplateEditView.as_view(), name='consoleporttemplate_edit'), 123 path('console-port-templates/<int:pk>/delete/', views.ConsolePortTemplateDeleteView.as_view(), name='consoleporttemplate_delete'), 124 125 # Console server port templates 126 path('console-server-port-templates/add/', views.ConsoleServerPortTemplateCreateView.as_view(), name='consoleserverporttemplate_add'), 127 path('console-server-port-templates/edit/', views.ConsoleServerPortTemplateBulkEditView.as_view(), name='consoleserverporttemplate_bulk_edit'), 128 path('console-server-port-templates/rename/', views.ConsoleServerPortTemplateBulkRenameView.as_view(), name='consoleserverporttemplate_bulk_rename'), 129 path('console-server-port-templates/delete/', views.ConsoleServerPortTemplateBulkDeleteView.as_view(), name='consoleserverporttemplate_bulk_delete'), 130 path('console-server-port-templates/<int:pk>/edit/', views.ConsoleServerPortTemplateEditView.as_view(), name='consoleserverporttemplate_edit'), 131 path('console-server-port-templates/<int:pk>/delete/', views.ConsoleServerPortTemplateDeleteView.as_view(), name='consoleserverporttemplate_delete'), 132 133 # Power port templates 134 path('power-port-templates/add/', views.PowerPortTemplateCreateView.as_view(), name='powerporttemplate_add'), 135 path('power-port-templates/edit/', views.PowerPortTemplateBulkEditView.as_view(), name='powerporttemplate_bulk_edit'), 136 path('power-port-templates/rename/', views.PowerPortTemplateBulkRenameView.as_view(), name='powerporttemplate_bulk_rename'), 137 path('power-port-templates/delete/', views.PowerPortTemplateBulkDeleteView.as_view(), name='powerporttemplate_bulk_delete'), 138 path('power-port-templates/<int:pk>/edit/', views.PowerPortTemplateEditView.as_view(), name='powerporttemplate_edit'), 139 path('power-port-templates/<int:pk>/delete/', views.PowerPortTemplateDeleteView.as_view(), name='powerporttemplate_delete'), 140 141 # Power outlet templates 142 path('power-outlet-templates/add/', views.PowerOutletTemplateCreateView.as_view(), name='poweroutlettemplate_add'), 143 path('power-outlet-templates/edit/', views.PowerOutletTemplateBulkEditView.as_view(), name='poweroutlettemplate_bulk_edit'), 144 path('power-outlet-templates/rename/', views.PowerOutletTemplateBulkRenameView.as_view(), name='poweroutlettemplate_bulk_rename'), 145 path('power-outlet-templates/delete/', views.PowerOutletTemplateBulkDeleteView.as_view(), name='poweroutlettemplate_bulk_delete'), 146 path('power-outlet-templates/<int:pk>/edit/', views.PowerOutletTemplateEditView.as_view(), name='poweroutlettemplate_edit'), 147 path('power-outlet-templates/<int:pk>/delete/', views.PowerOutletTemplateDeleteView.as_view(), name='poweroutlettemplate_delete'), 148 149 # Interface templates 150 path('interface-templates/add/', views.InterfaceTemplateCreateView.as_view(), name='interfacetemplate_add'), 151 path('interface-templates/edit/', views.InterfaceTemplateBulkEditView.as_view(), name='interfacetemplate_bulk_edit'), 152 path('interface-templates/rename/', views.InterfaceTemplateBulkRenameView.as_view(), name='interfacetemplate_bulk_rename'), 153 path('interface-templates/delete/', views.InterfaceTemplateBulkDeleteView.as_view(), name='interfacetemplate_bulk_delete'), 154 path('interface-templates/<int:pk>/edit/', views.InterfaceTemplateEditView.as_view(), name='interfacetemplate_edit'), 155 path('interface-templates/<int:pk>/delete/', views.InterfaceTemplateDeleteView.as_view(), name='interfacetemplate_delete'), 156 157 # Front port templates 158 path('front-port-templates/add/', views.FrontPortTemplateCreateView.as_view(), name='frontporttemplate_add'), 159 path('front-port-templates/edit/', views.FrontPortTemplateBulkEditView.as_view(), name='frontporttemplate_bulk_edit'), 160 path('front-port-templates/rename/', views.FrontPortTemplateBulkRenameView.as_view(), name='frontporttemplate_bulk_rename'), 161 path('front-port-templates/delete/', views.FrontPortTemplateBulkDeleteView.as_view(), name='frontporttemplate_bulk_delete'), 162 path('front-port-templates/<int:pk>/edit/', views.FrontPortTemplateEditView.as_view(), name='frontporttemplate_edit'), 163 path('front-port-templates/<int:pk>/delete/', views.FrontPortTemplateDeleteView.as_view(), name='frontporttemplate_delete'), 164 165 # Rear port templates 166 path('rear-port-templates/add/', views.RearPortTemplateCreateView.as_view(), name='rearporttemplate_add'), 167 path('rear-port-templates/edit/', views.RearPortTemplateBulkEditView.as_view(), name='rearporttemplate_bulk_edit'), 168 path('rear-port-templates/rename/', views.RearPortTemplateBulkRenameView.as_view(), name='rearporttemplate_bulk_rename'), 169 path('rear-port-templates/delete/', views.RearPortTemplateBulkDeleteView.as_view(), name='rearporttemplate_bulk_delete'), 170 path('rear-port-templates/<int:pk>/edit/', views.RearPortTemplateEditView.as_view(), name='rearporttemplate_edit'), 171 path('rear-port-templates/<int:pk>/delete/', views.RearPortTemplateDeleteView.as_view(), name='rearporttemplate_delete'), 172 173 # Device bay templates 174 path('device-bay-templates/add/', views.DeviceBayTemplateCreateView.as_view(), name='devicebaytemplate_add'), 175 path('device-bay-templates/edit/', views.DeviceBayTemplateBulkEditView.as_view(), name='devicebaytemplate_bulk_edit'), 176 path('device-bay-templates/rename/', views.DeviceBayTemplateBulkRenameView.as_view(), name='devicebaytemplate_bulk_rename'), 177 path('device-bay-templates/delete/', views.DeviceBayTemplateBulkDeleteView.as_view(), name='devicebaytemplate_bulk_delete'), 178 path('device-bay-templates/<int:pk>/edit/', views.DeviceBayTemplateEditView.as_view(), name='devicebaytemplate_edit'), 179 path('device-bay-templates/<int:pk>/delete/', views.DeviceBayTemplateDeleteView.as_view(), name='devicebaytemplate_delete'), 180 181 # Device roles 182 path('device-roles/', views.DeviceRoleListView.as_view(), name='devicerole_list'), 183 path('device-roles/add/', views.DeviceRoleEditView.as_view(), name='devicerole_add'), 184 path('device-roles/import/', views.DeviceRoleBulkImportView.as_view(), name='devicerole_import'), 185 path('device-roles/edit/', views.DeviceRoleBulkEditView.as_view(), name='devicerole_bulk_edit'), 186 path('device-roles/delete/', views.DeviceRoleBulkDeleteView.as_view(), name='devicerole_bulk_delete'), 187 path('device-roles/<int:pk>/', views.DeviceRoleView.as_view(), name='devicerole'), 188 path('device-roles/<int:pk>/edit/', views.DeviceRoleEditView.as_view(), name='devicerole_edit'), 189 path('device-roles/<int:pk>/delete/', views.DeviceRoleDeleteView.as_view(), name='devicerole_delete'), 190 path('device-roles/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='devicerole_changelog', kwargs={'model': DeviceRole}), 191 192 # Platforms 193 path('platforms/', views.PlatformListView.as_view(), name='platform_list'), 194 path('platforms/add/', views.PlatformEditView.as_view(), name='platform_add'), 195 path('platforms/import/', views.PlatformBulkImportView.as_view(), name='platform_import'), 196 path('platforms/edit/', views.PlatformBulkEditView.as_view(), name='platform_bulk_edit'), 197 path('platforms/delete/', views.PlatformBulkDeleteView.as_view(), name='platform_bulk_delete'), 198 path('platforms/<int:pk>/', views.PlatformView.as_view(), name='platform'), 199 path('platforms/<int:pk>/edit/', views.PlatformEditView.as_view(), name='platform_edit'), 200 path('platforms/<int:pk>/delete/', views.PlatformDeleteView.as_view(), name='platform_delete'), 201 path('platforms/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='platform_changelog', kwargs={'model': Platform}), 202 203 # Devices 204 path('devices/', views.DeviceListView.as_view(), name='device_list'), 205 path('devices/add/', views.DeviceEditView.as_view(), name='device_add'), 206 path('devices/import/', views.DeviceBulkImportView.as_view(), name='device_import'), 207 path('devices/import/child-devices/', views.ChildDeviceBulkImportView.as_view(), name='device_import_child'), 208 path('devices/edit/', views.DeviceBulkEditView.as_view(), name='device_bulk_edit'), 209 path('devices/delete/', views.DeviceBulkDeleteView.as_view(), name='device_bulk_delete'), 210 path('devices/<int:pk>/', views.DeviceView.as_view(), name='device'), 211 path('devices/<int:pk>/edit/', views.DeviceEditView.as_view(), name='device_edit'), 212 path('devices/<int:pk>/delete/', views.DeviceDeleteView.as_view(), name='device_delete'), 213 path('devices/<int:pk>/console-ports/', views.DeviceConsolePortsView.as_view(), name='device_consoleports'), 214 path('devices/<int:pk>/console-server-ports/', views.DeviceConsoleServerPortsView.as_view(), name='device_consoleserverports'), 215 path('devices/<int:pk>/power-ports/', views.DevicePowerPortsView.as_view(), name='device_powerports'), 216 path('devices/<int:pk>/power-outlets/', views.DevicePowerOutletsView.as_view(), name='device_poweroutlets'), 217 path('devices/<int:pk>/interfaces/', views.DeviceInterfacesView.as_view(), name='device_interfaces'), 218 path('devices/<int:pk>/front-ports/', views.DeviceFrontPortsView.as_view(), name='device_frontports'), 219 path('devices/<int:pk>/rear-ports/', views.DeviceRearPortsView.as_view(), name='device_rearports'), 220 path('devices/<int:pk>/device-bays/', views.DeviceDeviceBaysView.as_view(), name='device_devicebays'), 221 path('devices/<int:pk>/inventory/', views.DeviceInventoryView.as_view(), name='device_inventory'), 222 path('devices/<int:pk>/config-context/', views.DeviceConfigContextView.as_view(), name='device_configcontext'), 223 path('devices/<int:pk>/changelog/', views.DeviceChangeLogView.as_view(), name='device_changelog', kwargs={'model': Device}), 224 path('devices/<int:pk>/journal/', views.DeviceJournalView.as_view(), name='device_journal', kwargs={'model': Device}), 225 path('devices/<int:pk>/status/', views.DeviceStatusView.as_view(), name='device_status'), 226 path('devices/<int:pk>/lldp-neighbors/', views.DeviceLLDPNeighborsView.as_view(), name='device_lldp_neighbors'), 227 path('devices/<int:pk>/config/', views.DeviceConfigView.as_view(), name='device_config'), 228 path('devices/<int:device>/services/assign/', ServiceEditView.as_view(), name='device_service_assign'), 229 230 # Console ports 231 path('console-ports/', views.ConsolePortListView.as_view(), name='consoleport_list'), 232 path('console-ports/add/', views.ConsolePortCreateView.as_view(), name='consoleport_add'), 233 path('console-ports/import/', views.ConsolePortBulkImportView.as_view(), name='consoleport_import'), 234 path('console-ports/edit/', views.ConsolePortBulkEditView.as_view(), name='consoleport_bulk_edit'), 235 path('console-ports/rename/', views.ConsolePortBulkRenameView.as_view(), name='consoleport_bulk_rename'), 236 path('console-ports/disconnect/', views.ConsolePortBulkDisconnectView.as_view(), name='consoleport_bulk_disconnect'), 237 path('console-ports/delete/', views.ConsolePortBulkDeleteView.as_view(), name='consoleport_bulk_delete'), 238 path('console-ports/<int:pk>/', views.ConsolePortView.as_view(), name='consoleport'), 239 path('console-ports/<int:pk>/edit/', views.ConsolePortEditView.as_view(), name='consoleport_edit'), 240 path('console-ports/<int:pk>/delete/', views.ConsolePortDeleteView.as_view(), name='consoleport_delete'), 241 path('console-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='consoleport_changelog', kwargs={'model': ConsolePort}), 242 path('console-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='consoleport_trace', kwargs={'model': ConsolePort}), 243 path('console-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='consoleport_connect', kwargs={'termination_a_type': ConsolePort}), 244 path('devices/console-ports/add/', views.DeviceBulkAddConsolePortView.as_view(), name='device_bulk_add_consoleport'), 245 246 # Console server ports 247 path('console-server-ports/', views.ConsoleServerPortListView.as_view(), name='consoleserverport_list'), 248 path('console-server-ports/add/', views.ConsoleServerPortCreateView.as_view(), name='consoleserverport_add'), 249 path('console-server-ports/import/', views.ConsoleServerPortBulkImportView.as_view(), name='consoleserverport_import'), 250 path('console-server-ports/edit/', views.ConsoleServerPortBulkEditView.as_view(), name='consoleserverport_bulk_edit'), 251 path('console-server-ports/rename/', views.ConsoleServerPortBulkRenameView.as_view(), name='consoleserverport_bulk_rename'), 252 path('console-server-ports/disconnect/', views.ConsoleServerPortBulkDisconnectView.as_view(), name='consoleserverport_bulk_disconnect'), 253 path('console-server-ports/delete/', views.ConsoleServerPortBulkDeleteView.as_view(), name='consoleserverport_bulk_delete'), 254 path('console-server-ports/<int:pk>/', views.ConsoleServerPortView.as_view(), name='consoleserverport'), 255 path('console-server-ports/<int:pk>/edit/', views.ConsoleServerPortEditView.as_view(), name='consoleserverport_edit'), 256 path('console-server-ports/<int:pk>/delete/', views.ConsoleServerPortDeleteView.as_view(), name='consoleserverport_delete'), 257 path('console-server-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='consoleserverport_changelog', kwargs={'model': ConsoleServerPort}), 258 path('console-server-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='consoleserverport_trace', kwargs={'model': ConsoleServerPort}), 259 path('console-server-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='consoleserverport_connect', kwargs={'termination_a_type': ConsoleServerPort}), 260 path('devices/console-server-ports/add/', views.DeviceBulkAddConsoleServerPortView.as_view(), name='device_bulk_add_consoleserverport'), 261 262 # Power ports 263 path('power-ports/', views.PowerPortListView.as_view(), name='powerport_list'), 264 path('power-ports/add/', views.PowerPortCreateView.as_view(), name='powerport_add'), 265 path('power-ports/import/', views.PowerPortBulkImportView.as_view(), name='powerport_import'), 266 path('power-ports/edit/', views.PowerPortBulkEditView.as_view(), name='powerport_bulk_edit'), 267 path('power-ports/rename/', views.PowerPortBulkRenameView.as_view(), name='powerport_bulk_rename'), 268 path('power-ports/disconnect/', views.PowerPortBulkDisconnectView.as_view(), name='powerport_bulk_disconnect'), 269 path('power-ports/delete/', views.PowerPortBulkDeleteView.as_view(), name='powerport_bulk_delete'), 270 path('power-ports/<int:pk>/', views.PowerPortView.as_view(), name='powerport'), 271 path('power-ports/<int:pk>/edit/', views.PowerPortEditView.as_view(), name='powerport_edit'), 272 path('power-ports/<int:pk>/delete/', views.PowerPortDeleteView.as_view(), name='powerport_delete'), 273 path('power-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='powerport_changelog', kwargs={'model': PowerPort}), 274 path('power-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='powerport_trace', kwargs={'model': PowerPort}), 275 path('power-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='powerport_connect', kwargs={'termination_a_type': PowerPort}), 276 path('devices/power-ports/add/', views.DeviceBulkAddPowerPortView.as_view(), name='device_bulk_add_powerport'), 277 278 # Power outlets 279 path('power-outlets/', views.PowerOutletListView.as_view(), name='poweroutlet_list'), 280 path('power-outlets/add/', views.PowerOutletCreateView.as_view(), name='poweroutlet_add'), 281 path('power-outlets/import/', views.PowerOutletBulkImportView.as_view(), name='poweroutlet_import'), 282 path('power-outlets/edit/', views.PowerOutletBulkEditView.as_view(), name='poweroutlet_bulk_edit'), 283 path('power-outlets/rename/', views.PowerOutletBulkRenameView.as_view(), name='poweroutlet_bulk_rename'), 284 path('power-outlets/disconnect/', views.PowerOutletBulkDisconnectView.as_view(), name='poweroutlet_bulk_disconnect'), 285 path('power-outlets/delete/', views.PowerOutletBulkDeleteView.as_view(), name='poweroutlet_bulk_delete'), 286 path('power-outlets/<int:pk>/', views.PowerOutletView.as_view(), name='poweroutlet'), 287 path('power-outlets/<int:pk>/edit/', views.PowerOutletEditView.as_view(), name='poweroutlet_edit'), 288 path('power-outlets/<int:pk>/delete/', views.PowerOutletDeleteView.as_view(), name='poweroutlet_delete'), 289 path('power-outlets/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='poweroutlet_changelog', kwargs={'model': PowerOutlet}), 290 path('power-outlets/<int:pk>/trace/', views.PathTraceView.as_view(), name='poweroutlet_trace', kwargs={'model': PowerOutlet}), 291 path('power-outlets/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='poweroutlet_connect', kwargs={'termination_a_type': PowerOutlet}), 292 path('devices/power-outlets/add/', views.DeviceBulkAddPowerOutletView.as_view(), name='device_bulk_add_poweroutlet'), 293 294 # Interfaces 295 path('interfaces/', views.InterfaceListView.as_view(), name='interface_list'), 296 path('interfaces/add/', views.InterfaceCreateView.as_view(), name='interface_add'), 297 path('interfaces/import/', views.InterfaceBulkImportView.as_view(), name='interface_import'), 298 path('interfaces/edit/', views.InterfaceBulkEditView.as_view(), name='interface_bulk_edit'), 299 path('interfaces/rename/', views.InterfaceBulkRenameView.as_view(), name='interface_bulk_rename'), 300 path('interfaces/disconnect/', views.InterfaceBulkDisconnectView.as_view(), name='interface_bulk_disconnect'), 301 path('interfaces/delete/', views.InterfaceBulkDeleteView.as_view(), name='interface_bulk_delete'), 302 path('interfaces/<int:pk>/', views.InterfaceView.as_view(), name='interface'), 303 path('interfaces/<int:pk>/edit/', views.InterfaceEditView.as_view(), name='interface_edit'), 304 path('interfaces/<int:pk>/delete/', views.InterfaceDeleteView.as_view(), name='interface_delete'), 305 path('interfaces/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='interface_changelog', kwargs={'model': Interface}), 306 path('interfaces/<int:pk>/trace/', views.PathTraceView.as_view(), name='interface_trace', kwargs={'model': Interface}), 307 path('interfaces/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='interface_connect', kwargs={'termination_a_type': Interface}), 308 path('devices/interfaces/add/', views.DeviceBulkAddInterfaceView.as_view(), name='device_bulk_add_interface'), 309 310 # Front ports 311 path('front-ports/', views.FrontPortListView.as_view(), name='frontport_list'), 312 path('front-ports/add/', views.FrontPortCreateView.as_view(), name='frontport_add'), 313 path('front-ports/import/', views.FrontPortBulkImportView.as_view(), name='frontport_import'), 314 path('front-ports/edit/', views.FrontPortBulkEditView.as_view(), name='frontport_bulk_edit'), 315 path('front-ports/rename/', views.FrontPortBulkRenameView.as_view(), name='frontport_bulk_rename'), 316 path('front-ports/disconnect/', views.FrontPortBulkDisconnectView.as_view(), name='frontport_bulk_disconnect'), 317 path('front-ports/delete/', views.FrontPortBulkDeleteView.as_view(), name='frontport_bulk_delete'), 318 path('front-ports/<int:pk>/', views.FrontPortView.as_view(), name='frontport'), 319 path('front-ports/<int:pk>/edit/', views.FrontPortEditView.as_view(), name='frontport_edit'), 320 path('front-ports/<int:pk>/delete/', views.FrontPortDeleteView.as_view(), name='frontport_delete'), 321 path('front-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='frontport_changelog', kwargs={'model': FrontPort}), 322 path('front-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='frontport_trace', kwargs={'model': FrontPort}), 323 path('front-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='frontport_connect', kwargs={'termination_a_type': FrontPort}), 324 # path('devices/front-ports/add/', views.DeviceBulkAddFrontPortView.as_view(), name='device_bulk_add_frontport'), 325 326 # Rear ports 327 path('rear-ports/', views.RearPortListView.as_view(), name='rearport_list'), 328 path('rear-ports/add/', views.RearPortCreateView.as_view(), name='rearport_add'), 329 path('rear-ports/import/', views.RearPortBulkImportView.as_view(), name='rearport_import'), 330 path('rear-ports/edit/', views.RearPortBulkEditView.as_view(), name='rearport_bulk_edit'), 331 path('rear-ports/rename/', views.RearPortBulkRenameView.as_view(), name='rearport_bulk_rename'), 332 path('rear-ports/disconnect/', views.RearPortBulkDisconnectView.as_view(), name='rearport_bulk_disconnect'), 333 path('rear-ports/delete/', views.RearPortBulkDeleteView.as_view(), name='rearport_bulk_delete'), 334 path('rear-ports/<int:pk>/', views.RearPortView.as_view(), name='rearport'), 335 path('rear-ports/<int:pk>/edit/', views.RearPortEditView.as_view(), name='rearport_edit'), 336 path('rear-ports/<int:pk>/delete/', views.RearPortDeleteView.as_view(), name='rearport_delete'), 337 path('rear-ports/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='rearport_changelog', kwargs={'model': RearPort}), 338 path('rear-ports/<int:pk>/trace/', views.PathTraceView.as_view(), name='rearport_trace', kwargs={'model': RearPort}), 339 path('rear-ports/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='rearport_connect', kwargs={'termination_a_type': RearPort}), 340 path('devices/rear-ports/add/', views.DeviceBulkAddRearPortView.as_view(), name='device_bulk_add_rearport'), 341 342 # Device bays 343 path('device-bays/', views.DeviceBayListView.as_view(), name='devicebay_list'), 344 path('device-bays/add/', views.DeviceBayCreateView.as_view(), name='devicebay_add'), 345 path('device-bays/import/', views.DeviceBayBulkImportView.as_view(), name='devicebay_import'), 346 path('device-bays/edit/', views.DeviceBayBulkEditView.as_view(), name='devicebay_bulk_edit'), 347 path('device-bays/rename/', views.DeviceBayBulkRenameView.as_view(), name='devicebay_bulk_rename'), 348 path('device-bays/delete/', views.DeviceBayBulkDeleteView.as_view(), name='devicebay_bulk_delete'), 349 path('device-bays/<int:pk>/', views.DeviceBayView.as_view(), name='devicebay'), 350 path('device-bays/<int:pk>/edit/', views.DeviceBayEditView.as_view(), name='devicebay_edit'), 351 path('device-bays/<int:pk>/delete/', views.DeviceBayDeleteView.as_view(), name='devicebay_delete'), 352 path('device-bays/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='devicebay_changelog', kwargs={'model': DeviceBay}), 353 path('device-bays/<int:pk>/populate/', views.DeviceBayPopulateView.as_view(), name='devicebay_populate'), 354 path('device-bays/<int:pk>/depopulate/', views.DeviceBayDepopulateView.as_view(), name='devicebay_depopulate'), 355 path('devices/device-bays/add/', views.DeviceBulkAddDeviceBayView.as_view(), name='device_bulk_add_devicebay'), 356 357 # Inventory items 358 path('inventory-items/', views.InventoryItemListView.as_view(), name='inventoryitem_list'), 359 path('inventory-items/add/', views.InventoryItemCreateView.as_view(), name='inventoryitem_add'), 360 path('inventory-items/import/', views.InventoryItemBulkImportView.as_view(), name='inventoryitem_import'), 361 path('inventory-items/edit/', views.InventoryItemBulkEditView.as_view(), name='inventoryitem_bulk_edit'), 362 path('inventory-items/rename/', views.InventoryItemBulkRenameView.as_view(), name='inventoryitem_bulk_rename'), 363 path('inventory-items/delete/', views.InventoryItemBulkDeleteView.as_view(), name='inventoryitem_bulk_delete'), 364 path('inventory-items/<int:pk>/', views.InventoryItemView.as_view(), name='inventoryitem'), 365 path('inventory-items/<int:pk>/edit/', views.InventoryItemEditView.as_view(), name='inventoryitem_edit'), 366 path('inventory-items/<int:pk>/delete/', views.InventoryItemDeleteView.as_view(), name='inventoryitem_delete'), 367 path('inventory-items/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='inventoryitem_changelog', kwargs={'model': InventoryItem}), 368 path('devices/inventory-items/add/', views.DeviceBulkAddInventoryItemView.as_view(), name='device_bulk_add_inventoryitem'), 369 370 # Cables 371 path('cables/', views.CableListView.as_view(), name='cable_list'), 372 path('cables/import/', views.CableBulkImportView.as_view(), name='cable_import'), 373 path('cables/edit/', views.CableBulkEditView.as_view(), name='cable_bulk_edit'), 374 path('cables/delete/', views.CableBulkDeleteView.as_view(), name='cable_bulk_delete'), 375 path('cables/<int:pk>/', views.CableView.as_view(), name='cable'), 376 path('cables/<int:pk>/edit/', views.CableEditView.as_view(), name='cable_edit'), 377 path('cables/<int:pk>/delete/', views.CableDeleteView.as_view(), name='cable_delete'), 378 path('cables/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='cable_changelog', kwargs={'model': Cable}), 379 path('cables/<int:pk>/journal/', ObjectJournalView.as_view(), name='cable_journal', kwargs={'model': Cable}), 380 381 # Console/power/interface connections (read-only) 382 path('console-connections/', views.ConsoleConnectionsListView.as_view(), name='console_connections_list'), 383 path('power-connections/', views.PowerConnectionsListView.as_view(), name='power_connections_list'), 384 path('interface-connections/', views.InterfaceConnectionsListView.as_view(), name='interface_connections_list'), 385 386 # Virtual chassis 387 path('virtual-chassis/', views.VirtualChassisListView.as_view(), name='virtualchassis_list'), 388 path('virtual-chassis/add/', views.VirtualChassisCreateView.as_view(), name='virtualchassis_add'), 389 path('virtual-chassis/import/', views.VirtualChassisBulkImportView.as_view(), name='virtualchassis_import'), 390 path('virtual-chassis/edit/', views.VirtualChassisBulkEditView.as_view(), name='virtualchassis_bulk_edit'), 391 path('virtual-chassis/delete/', views.VirtualChassisBulkDeleteView.as_view(), name='virtualchassis_bulk_delete'), 392 path('virtual-chassis/<int:pk>/', views.VirtualChassisView.as_view(), name='virtualchassis'), 393 path('virtual-chassis/<int:pk>/edit/', views.VirtualChassisEditView.as_view(), name='virtualchassis_edit'), 394 path('virtual-chassis/<int:pk>/delete/', views.VirtualChassisDeleteView.as_view(), name='virtualchassis_delete'), 395 path('virtual-chassis/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='virtualchassis_changelog', kwargs={'model': VirtualChassis}), 396 path('virtual-chassis/<int:pk>/journal/', ObjectJournalView.as_view(), name='virtualchassis_journal', kwargs={'model': VirtualChassis}), 397 path('virtual-chassis/<int:pk>/add-member/', views.VirtualChassisAddMemberView.as_view(), name='virtualchassis_add_member'), 398 path('virtual-chassis-members/<int:pk>/delete/', views.VirtualChassisRemoveMemberView.as_view(), name='virtualchassis_remove_member'), 399 400 # Power panels 401 path('power-panels/', views.PowerPanelListView.as_view(), name='powerpanel_list'), 402 path('power-panels/add/', views.PowerPanelEditView.as_view(), name='powerpanel_add'), 403 path('power-panels/import/', views.PowerPanelBulkImportView.as_view(), name='powerpanel_import'), 404 path('power-panels/edit/', views.PowerPanelBulkEditView.as_view(), name='powerpanel_bulk_edit'), 405 path('power-panels/delete/', views.PowerPanelBulkDeleteView.as_view(), name='powerpanel_bulk_delete'), 406 path('power-panels/<int:pk>/', views.PowerPanelView.as_view(), name='powerpanel'), 407 path('power-panels/<int:pk>/edit/', views.PowerPanelEditView.as_view(), name='powerpanel_edit'), 408 path('power-panels/<int:pk>/delete/', views.PowerPanelDeleteView.as_view(), name='powerpanel_delete'), 409 path('power-panels/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='powerpanel_changelog', kwargs={'model': PowerPanel}), 410 path('power-panels/<int:pk>/journal/', ObjectJournalView.as_view(), name='powerpanel_journal', kwargs={'model': PowerPanel}), 411 412 # Power feeds 413 path('power-feeds/', views.PowerFeedListView.as_view(), name='powerfeed_list'), 414 path('power-feeds/add/', views.PowerFeedEditView.as_view(), name='powerfeed_add'), 415 path('power-feeds/import/', views.PowerFeedBulkImportView.as_view(), name='powerfeed_import'), 416 path('power-feeds/edit/', views.PowerFeedBulkEditView.as_view(), name='powerfeed_bulk_edit'), 417 path('power-feeds/disconnect/', views.PowerFeedBulkDisconnectView.as_view(), name='powerfeed_bulk_disconnect'), 418 path('power-feeds/delete/', views.PowerFeedBulkDeleteView.as_view(), name='powerfeed_bulk_delete'), 419 path('power-feeds/<int:pk>/', views.PowerFeedView.as_view(), name='powerfeed'), 420 path('power-feeds/<int:pk>/edit/', views.PowerFeedEditView.as_view(), name='powerfeed_edit'), 421 path('power-feeds/<int:pk>/delete/', views.PowerFeedDeleteView.as_view(), name='powerfeed_delete'), 422 path('power-feeds/<int:pk>/trace/', views.PathTraceView.as_view(), name='powerfeed_trace', kwargs={'model': PowerFeed}), 423 path('power-feeds/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='powerfeed_changelog', kwargs={'model': PowerFeed}), 424 path('power-feeds/<int:pk>/journal/', ObjectJournalView.as_view(), name='powerfeed_journal', kwargs={'model': PowerFeed}), 425 path('power-feeds/<int:termination_a_id>/connect/<str:termination_b_type>/', views.CableCreateView.as_view(), name='powerfeed_connect', kwargs={'termination_a_type': PowerFeed}), 426 427] 428