mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 01:06:11 -06:00
Merge branch 'develop' into 8749-clone-custom-fields
This commit is contained in:
commit
98ca5d8092
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@ -14,7 +14,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: NetBox version
|
label: NetBox version
|
||||||
description: What version of NetBox are you currently running?
|
description: What version of NetBox are you currently running?
|
||||||
placeholder: v3.3.7
|
placeholder: v3.3.8
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
@ -14,7 +14,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: NetBox version
|
label: NetBox version
|
||||||
description: What version of NetBox are you currently running?
|
description: What version of NetBox are you currently running?
|
||||||
placeholder: v3.3.7
|
placeholder: v3.3.8
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
@ -36,7 +36,7 @@ This documentation provides two options for installing NetBox: from a downloadab
|
|||||||
Download the [latest stable release](https://github.com/netbox-community/netbox/releases) from GitHub as a tarball or ZIP archive and extract it to your desired path. In this example, we'll use `/opt/netbox` as the NetBox root.
|
Download the [latest stable release](https://github.com/netbox-community/netbox/releases) from GitHub as a tarball or ZIP archive and extract it to your desired path. In this example, we'll use `/opt/netbox` as the NetBox root.
|
||||||
|
|
||||||
```no-highlight
|
```no-highlight
|
||||||
sudo wget https://github.com/netbox-community/netbox/archive/vX.Y.Z.tar.gz
|
sudo wget https://github.com/netbox-community/netbox/archive/refs/tags/vX.Y.Z.tar.gz
|
||||||
sudo tar -xzf vX.Y.Z.tar.gz -C /opt
|
sudo tar -xzf vX.Y.Z.tar.gz -C /opt
|
||||||
sudo ln -s /opt/netbox-X.Y.Z/ /opt/netbox
|
sudo ln -s /opt/netbox-X.Y.Z/ /opt/netbox
|
||||||
```
|
```
|
||||||
|
@ -1,9 +1,24 @@
|
|||||||
# NetBox v3.3
|
# NetBox v3.3
|
||||||
|
|
||||||
## v3.3.8 (FUTURE)
|
## v3.3.9 (FUTURE)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.3.8 (2022-11-16)
|
||||||
|
|
||||||
|
### Enhancements
|
||||||
|
|
||||||
|
* [#10356](https://github.com/netbox-community/netbox/issues/10356) - Add backplane Ethernet interface types
|
||||||
|
* [#10902](https://github.com/netbox-community/netbox/issues/10902) - Add location selector to power feed form
|
||||||
|
* [#10904](https://github.com/netbox-community/netbox/issues/10904) - Use front/rear port colors in cable trace SVG
|
||||||
|
* [#10914](https://github.com/netbox-community/netbox/issues/10914) - Include "add module type" button on manufacturer view
|
||||||
|
* [#10915](https://github.com/netbox-community/netbox/issues/10915) - Add count of L2VPNs to tenant view
|
||||||
|
* [#10919](https://github.com/netbox-community/netbox/issues/10919) - Include device location under cable view
|
||||||
|
* [#10920](https://github.com/netbox-community/netbox/issues/10920) - Include request cookies when queuing a custom script
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
|
* [#9439](https://github.com/netbox-community/netbox/issues/9439) - Ensure thread safety of change logging functions
|
||||||
* [#10709](https://github.com/netbox-community/netbox/issues/10709) - Correct UI display for `azuread-v2-tenant-oauth2` SSO backend
|
* [#10709](https://github.com/netbox-community/netbox/issues/10709) - Correct UI display for `azuread-v2-tenant-oauth2` SSO backend
|
||||||
* [#10829](https://github.com/netbox-community/netbox/issues/10829) - Fix bulk edit/delete buttons ad top of object lists
|
* [#10829](https://github.com/netbox-community/netbox/issues/10829) - Fix bulk edit/delete buttons ad top of object lists
|
||||||
* [#10837](https://github.com/netbox-community/netbox/issues/10837) - Correct cookie paths when `BASE_PATH` is set
|
* [#10837](https://github.com/netbox-community/netbox/issues/10837) - Correct cookie paths when `BASE_PATH` is set
|
||||||
|
@ -783,6 +783,17 @@ class InterfaceTypeChoices(ChoiceSet):
|
|||||||
TYPE_400GE_QSFP_DD = '400gbase-x-qsfpdd'
|
TYPE_400GE_QSFP_DD = '400gbase-x-qsfpdd'
|
||||||
TYPE_400GE_OSFP = '400gbase-x-osfp'
|
TYPE_400GE_OSFP = '400gbase-x-osfp'
|
||||||
|
|
||||||
|
# Ethernet Backplane
|
||||||
|
TYPE_1GE_KX = '1000base-kx'
|
||||||
|
TYPE_10GE_KR = '10gbase-kr'
|
||||||
|
TYPE_10GE_KX4 = '10gbase-kx4'
|
||||||
|
TYPE_25GE_KR = '25gbase-kr'
|
||||||
|
TYPE_40GE_KR4 = '40gbase-kr4'
|
||||||
|
TYPE_50GE_KR = '50gbase-kr'
|
||||||
|
TYPE_100GE_KP4 = '100gbase-kp4'
|
||||||
|
TYPE_100GE_KR2 = '100gbase-kr2'
|
||||||
|
TYPE_100GE_KR4 = '100gbase-kr4'
|
||||||
|
|
||||||
# Wireless
|
# Wireless
|
||||||
TYPE_80211A = 'ieee802.11a'
|
TYPE_80211A = 'ieee802.11a'
|
||||||
TYPE_80211G = 'ieee802.11g'
|
TYPE_80211G = 'ieee802.11g'
|
||||||
@ -911,6 +922,20 @@ class InterfaceTypeChoices(ChoiceSet):
|
|||||||
(TYPE_400GE_OSFP, 'OSFP (400GE)'),
|
(TYPE_400GE_OSFP, 'OSFP (400GE)'),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
'Ethernet (backplane)',
|
||||||
|
(
|
||||||
|
(TYPE_1GE_KX, '1000BASE-KX (1GE)'),
|
||||||
|
(TYPE_10GE_KR, '10GBASE-KR (10GE)'),
|
||||||
|
(TYPE_10GE_KX4, '10GBASE-KX4 (10GE)'),
|
||||||
|
(TYPE_25GE_KR, '25GBASE-KR (25GE)'),
|
||||||
|
(TYPE_40GE_KR4, '40GBASE-KR4 (40GE)'),
|
||||||
|
(TYPE_50GE_KR, '50GBASE-KR (50GE)'),
|
||||||
|
(TYPE_100GE_KP4, '100GBASE-KP4 (100GE)'),
|
||||||
|
(TYPE_100GE_KR2, '100GBASE-KR2 (100GE)'),
|
||||||
|
(TYPE_100GE_KR4, '100GBASE-KR4 (100GE)'),
|
||||||
|
)
|
||||||
|
),
|
||||||
(
|
(
|
||||||
'Wireless',
|
'Wireless',
|
||||||
(
|
(
|
||||||
|
@ -877,10 +877,21 @@ class PowerFeedForm(NetBoxModelForm):
|
|||||||
'site_id': '$site'
|
'site_id': '$site'
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
location = DynamicModelChoiceField(
|
||||||
|
queryset=Location.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'site_id': '$site'
|
||||||
|
},
|
||||||
|
initial_params={
|
||||||
|
'racks': '$rack'
|
||||||
|
}
|
||||||
|
)
|
||||||
rack = DynamicModelChoiceField(
|
rack = DynamicModelChoiceField(
|
||||||
queryset=Rack.objects.all(),
|
queryset=Rack.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
query_params={
|
query_params={
|
||||||
|
'location_id': '$location',
|
||||||
'site_id': '$site'
|
'site_id': '$site'
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -888,14 +899,14 @@ class PowerFeedForm(NetBoxModelForm):
|
|||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Power Panel', ('region', 'site', 'power_panel')),
|
('Power Panel', ('region', 'site', 'power_panel')),
|
||||||
('Power Feed', ('rack', 'name', 'status', 'type', 'mark_connected', 'tags')),
|
('Power Feed', ('location', 'rack', 'name', 'status', 'type', 'mark_connected', 'tags')),
|
||||||
('Characteristics', ('supply', 'voltage', 'amperage', 'phase', 'max_utilization')),
|
('Characteristics', ('supply', 'voltage', 'amperage', 'phase', 'max_utilization')),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PowerFeed
|
model = PowerFeed
|
||||||
fields = [
|
fields = [
|
||||||
'region', 'site_group', 'site', 'power_panel', 'rack', 'name', 'status', 'type', 'mark_connected', 'supply',
|
'region', 'site_group', 'site', 'power_panel', 'location', 'rack', 'name', 'status', 'type', 'mark_connected', 'supply',
|
||||||
'phase', 'voltage', 'amperage', 'max_utilization', 'comments', 'tags',
|
'phase', 'voltage', 'amperage', 'max_utilization', 'comments', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
|
@ -166,7 +166,7 @@ class CableTraceSVG:
|
|||||||
"""
|
"""
|
||||||
if hasattr(instance, 'parent_object'):
|
if hasattr(instance, 'parent_object'):
|
||||||
# Termination
|
# Termination
|
||||||
return 'f0f0f0'
|
return getattr(instance, 'color', 'f0f0f0') or 'f0f0f0'
|
||||||
if hasattr(instance, 'device_role'):
|
if hasattr(instance, 'device_role'):
|
||||||
# Device
|
# Device
|
||||||
return instance.device_role.color
|
return instance.device_role.color
|
||||||
|
@ -29,7 +29,7 @@ django.utils.encoding.force_text = force_str
|
|||||||
# Environment setup
|
# Environment setup
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION = '3.3.8-dev'
|
VERSION = '3.3.9-dev'
|
||||||
|
|
||||||
# Hostname
|
# Hostname
|
||||||
HOSTNAME = platform.node()
|
HOSTNAME = platform.node()
|
||||||
|
@ -7,6 +7,10 @@
|
|||||||
<td>Site</td>
|
<td>Site</td>
|
||||||
<td>{{ terminations.0.device.site|linkify }}</td>
|
<td>{{ terminations.0.device.site|linkify }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Location</td>
|
||||||
|
<td>{{ terminations.0.device.location|linkify|placeholder }}</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Rack</td>
|
<td>Rack</td>
|
||||||
<td>{{ terminations.0.device.rack|linkify|placeholder }}</td>
|
<td>{{ terminations.0.device.rack|linkify|placeholder }}</td>
|
||||||
|
@ -410,6 +410,7 @@ def copy_safe_request(request):
|
|||||||
}
|
}
|
||||||
return NetBoxFakeRequest({
|
return NetBoxFakeRequest({
|
||||||
'META': meta,
|
'META': meta,
|
||||||
|
'COOKIES': request.COOKIES,
|
||||||
'POST': request.POST,
|
'POST': request.POST,
|
||||||
'GET': request.GET,
|
'GET': request.GET,
|
||||||
'FILES': request.FILES,
|
'FILES': request.FILES,
|
||||||
|
@ -9,7 +9,7 @@ django-pglocks==1.0.4
|
|||||||
django-prometheus==2.2.0
|
django-prometheus==2.2.0
|
||||||
django-redis==5.2.0
|
django-redis==5.2.0
|
||||||
django-rich==1.4.0
|
django-rich==1.4.0
|
||||||
django-rq==2.5.1
|
django-rq==2.6.0
|
||||||
django-tables2==2.4.1
|
django-tables2==2.4.1
|
||||||
django-taggit==3.0.0
|
django-taggit==3.0.0
|
||||||
django-timezone-field==5.0
|
django-timezone-field==5.0
|
||||||
@ -19,13 +19,13 @@ graphene-django==2.15.0
|
|||||||
gunicorn==20.1.0
|
gunicorn==20.1.0
|
||||||
Jinja2==3.1.2
|
Jinja2==3.1.2
|
||||||
Markdown==3.3.7
|
Markdown==3.3.7
|
||||||
mkdocs-material==8.5.7
|
mkdocs-material==8.5.10
|
||||||
mkdocstrings[python-legacy]==0.19.0
|
mkdocstrings[python-legacy]==0.19.0
|
||||||
netaddr==0.8.0
|
netaddr==0.8.0
|
||||||
Pillow==9.3.0
|
Pillow==9.3.0
|
||||||
psycopg2-binary==2.9.5
|
psycopg2-binary==2.9.5
|
||||||
PyYAML==6.0
|
PyYAML==6.0
|
||||||
sentry-sdk==1.10.1
|
sentry-sdk==1.11.0
|
||||||
social-auth-app-django==5.0.0
|
social-auth-app-django==5.0.0
|
||||||
social-auth-core[openidconnect]==4.3.0
|
social-auth-core[openidconnect]==4.3.0
|
||||||
svgwrite==1.4.3
|
svgwrite==1.4.3
|
||||||
|
Loading…
Reference in New Issue
Block a user