Jelajahi Sumber

Release v4.5.7 (#21838)

Jeremy Stretch 5 hari lalu
induk
melakukan
d0651f6474
39 mengubah file dengan 4298 tambahan dan 4487 penghapusan
  1. 1 1
      .github/ISSUE_TEMPLATE/01-feature_request.yaml
  2. 1 1
      .github/ISSUE_TEMPLATE/02-bug_report.yaml
  3. 1 1
      .github/ISSUE_TEMPLATE/03-performance.yaml
  4. 1 2
      base_requirements.txt
  5. 131 43
      contrib/openapi.json
  6. 26 0
      docs/release-notes/version-4.5.md
  7. 2 2
      netbox/release.yaml
  8. TEMPAT SAMPAH
      netbox/translations/cs/LC_MESSAGES/django.mo
  9. 275 295
      netbox/translations/cs/LC_MESSAGES/django.po
  10. TEMPAT SAMPAH
      netbox/translations/da/LC_MESSAGES/django.mo
  11. 275 295
      netbox/translations/da/LC_MESSAGES/django.po
  12. TEMPAT SAMPAH
      netbox/translations/de/LC_MESSAGES/django.mo
  13. 277 297
      netbox/translations/de/LC_MESSAGES/django.po
  14. TEMPAT SAMPAH
      netbox/translations/es/LC_MESSAGES/django.mo
  15. 275 295
      netbox/translations/es/LC_MESSAGES/django.po
  16. TEMPAT SAMPAH
      netbox/translations/fr/LC_MESSAGES/django.mo
  17. 281 300
      netbox/translations/fr/LC_MESSAGES/django.po
  18. TEMPAT SAMPAH
      netbox/translations/it/LC_MESSAGES/django.mo
  19. 275 295
      netbox/translations/it/LC_MESSAGES/django.po
  20. TEMPAT SAMPAH
      netbox/translations/ja/LC_MESSAGES/django.mo
  21. 273 295
      netbox/translations/ja/LC_MESSAGES/django.po
  22. TEMPAT SAMPAH
      netbox/translations/lv/LC_MESSAGES/django.mo
  23. 275 295
      netbox/translations/lv/LC_MESSAGES/django.po
  24. TEMPAT SAMPAH
      netbox/translations/nl/LC_MESSAGES/django.mo
  25. 275 295
      netbox/translations/nl/LC_MESSAGES/django.po
  26. TEMPAT SAMPAH
      netbox/translations/pl/LC_MESSAGES/django.mo
  27. 275 295
      netbox/translations/pl/LC_MESSAGES/django.po
  28. TEMPAT SAMPAH
      netbox/translations/pt/LC_MESSAGES/django.mo
  29. 275 295
      netbox/translations/pt/LC_MESSAGES/django.po
  30. TEMPAT SAMPAH
      netbox/translations/ru/LC_MESSAGES/django.mo
  31. 275 295
      netbox/translations/ru/LC_MESSAGES/django.po
  32. TEMPAT SAMPAH
      netbox/translations/tr/LC_MESSAGES/django.mo
  33. 275 295
      netbox/translations/tr/LC_MESSAGES/django.po
  34. TEMPAT SAMPAH
      netbox/translations/uk/LC_MESSAGES/django.mo
  35. 275 295
      netbox/translations/uk/LC_MESSAGES/django.po
  36. TEMPAT SAMPAH
      netbox/translations/zh/LC_MESSAGES/django.mo
  37. 274 295
      netbox/translations/zh/LC_MESSAGES/django.po
  38. 1 1
      pyproject.toml
  39. 4 4
      requirements.txt

+ 1 - 1
.github/ISSUE_TEMPLATE/01-feature_request.yaml

@@ -15,7 +15,7 @@ body:
     attributes:
       label: NetBox version
       description: What version of NetBox are you currently running?
-      placeholder: v4.5.6
+      placeholder: v4.5.7
     validations:
       required: true
   - type: dropdown

+ 1 - 1
.github/ISSUE_TEMPLATE/02-bug_report.yaml

@@ -27,7 +27,7 @@ body:
     attributes:
       label: NetBox Version
       description: What version of NetBox are you currently running?
-      placeholder: v4.5.6
+      placeholder: v4.5.7
     validations:
       required: true
   - type: dropdown

+ 1 - 1
.github/ISSUE_TEMPLATE/03-performance.yaml

@@ -8,7 +8,7 @@ body:
     attributes:
       label: NetBox Version
       description: What version of NetBox are you currently running?
-      placeholder: v4.5.6
+      placeholder: v4.5.7
     validations:
       required: true
   - type: dropdown

+ 1 - 2
base_requirements.txt

@@ -47,8 +47,7 @@ django-rich
 
 # Django integration for RQ (Reqis queuing)
 # https://github.com/rq/django-rq/blob/master/CHANGELOG.md
-# See https://github.com/netbox-community/netbox/issues/21696
-django-rq<4.0
+django-rq
 
 # Provides a variety of storage backends
 # https://github.com/jschneier/django-storages/blob/master/CHANGELOG.rst

+ 131 - 43
contrib/openapi.json

@@ -2,7 +2,7 @@
     "openapi": "3.0.3",
     "info": {
         "title": "NetBox REST API",
-        "version": "4.5.6",
+        "version": "4.5.7",
         "license": {
             "name": "Apache v2 License"
         }
@@ -25468,7 +25468,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25488,7 +25488,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25501,7 +25501,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25514,7 +25514,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25527,7 +25527,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25540,7 +25540,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25553,7 +25553,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25566,7 +25566,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25579,7 +25579,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25592,7 +25592,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25605,7 +25605,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -25618,7 +25618,7 @@
                             "type": "array",
                             "items": {
                                 "type": "string",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             }
                         },
                         "explode": true,
@@ -138591,6 +138591,50 @@
                 }
             }
         },
+        "/api/extras/scripts/upload/": {
+            "post": {
+                "operationId": "extras_scripts_upload_create",
+                "description": "Post a list of script module objects.",
+                "tags": [
+                    "extras"
+                ],
+                "requestBody": {
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/ScriptModuleRequest"
+                            }
+                        },
+                        "multipart/form-data": {
+                            "schema": {
+                                "$ref": "#/components/schemas/ScriptModuleRequest"
+                            }
+                        }
+                    },
+                    "required": true
+                },
+                "security": [
+                    {
+                        "cookieAuth": []
+                    },
+                    {
+                        "tokenAuth": []
+                    }
+                ],
+                "responses": {
+                    "201": {
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/ScriptModule"
+                                }
+                            }
+                        },
+                        "description": ""
+                    }
+                }
+            }
+        },
         "/api/extras/subscriptions/": {
             "get": {
                 "operationId": "extras_subscriptions_list",
@@ -228046,13 +228090,14 @@
                                     "trunk-4c6p",
                                     "trunk-4c8p",
                                     "trunk-8c4p",
+                                    "breakout-1c2p-2c1p",
                                     "breakout-1c4p-4c1p",
                                     "breakout-1c6p-6c1p",
                                     "breakout-2c4p-8c1p-shuffle"
                                 ],
                                 "type": "string",
-                                "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
-                                "x-spec-enum-id": "5e0f85310f0184ea"
+                                "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c2p-2c1p` - 1C2P:2C1P breakout\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
+                                "x-spec-enum-id": "f566e6df6572f5d0"
                             },
                             "label": {
                                 "type": "string",
@@ -228078,6 +228123,7 @@
                                     "4C6P trunk",
                                     "4C8P trunk",
                                     "8C4P trunk",
+                                    "1C2P:2C1P breakout",
                                     "1C4P:4C1P breakout",
                                     "1C6P:6C1P breakout",
                                     "2C4P:8C1P breakout (shuffle)"
@@ -228282,13 +228328,14 @@
                             "trunk-4c6p",
                             "trunk-4c8p",
                             "trunk-8c4p",
+                            "breakout-1c2p-2c1p",
                             "breakout-1c4p-4c1p",
                             "breakout-1c6p-6c1p",
                             "breakout-2c4p-8c1p-shuffle"
                         ],
                         "type": "string",
-                        "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
-                        "x-spec-enum-id": "5e0f85310f0184ea"
+                        "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c2p-2c1p` - 1C2P:2C1P breakout\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
+                        "x-spec-enum-id": "f566e6df6572f5d0"
                     },
                     "tenant": {
                         "oneOf": [
@@ -254488,8 +254535,7 @@
                     "size": {
                         "type": "integer",
                         "maximum": 2147483647,
-                        "minimum": 0,
-                        "title": "Size (MB)"
+                        "minimum": 0
                     },
                     "owner": {
                         "oneOf": [
@@ -254774,14 +254820,15 @@
                             "trunk-4c6p",
                             "trunk-4c8p",
                             "trunk-8c4p",
+                            "breakout-1c2p-2c1p",
                             "breakout-1c4p-4c1p",
                             "breakout-1c6p-6c1p",
                             "breakout-2c4p-8c1p-shuffle",
                             ""
                         ],
                         "type": "string",
-                        "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
-                        "x-spec-enum-id": "5e0f85310f0184ea"
+                        "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c2p-2c1p` - 1C2P:2C1P breakout\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
+                        "x-spec-enum-id": "f566e6df6572f5d0"
                     },
                     "tenant": {
                         "oneOf": [
@@ -262819,15 +262866,13 @@
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Memory (MB)"
+                        "nullable": true
                     },
                     "disk": {
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Disk (MB)"
+                        "nullable": true
                     },
                     "description": {
                         "type": "string",
@@ -270340,6 +270385,56 @@
                     "data"
                 ]
             },
+            "ScriptModule": {
+                "type": "object",
+                "description": "Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during\nvalidation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)",
+                "properties": {
+                    "id": {
+                        "type": "integer",
+                        "readOnly": true
+                    },
+                    "display": {
+                        "type": "string",
+                        "readOnly": true
+                    },
+                    "file_path": {
+                        "type": "string",
+                        "readOnly": true
+                    },
+                    "created": {
+                        "type": "string",
+                        "format": "date-time",
+                        "readOnly": true
+                    },
+                    "last_updated": {
+                        "type": "string",
+                        "format": "date-time",
+                        "readOnly": true,
+                        "nullable": true
+                    }
+                },
+                "required": [
+                    "created",
+                    "display",
+                    "file_path",
+                    "id",
+                    "last_updated"
+                ]
+            },
+            "ScriptModuleRequest": {
+                "type": "object",
+                "description": "Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during\nvalidation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)",
+                "properties": {
+                    "file": {
+                        "type": "string",
+                        "format": "binary",
+                        "writeOnly": true
+                    }
+                },
+                "required": [
+                    "file"
+                ]
+            },
             "Service": {
                 "type": "object",
                 "description": "Base serializer class for models inheriting from PrimaryModel.",
@@ -275384,8 +275479,7 @@
                     "size": {
                         "type": "integer",
                         "maximum": 2147483647,
-                        "minimum": 0,
-                        "title": "Size (MB)"
+                        "minimum": 0
                     },
                     "owner": {
                         "allOf": [
@@ -275456,8 +275550,7 @@
                     "size": {
                         "type": "integer",
                         "maximum": 2147483647,
-                        "minimum": 0,
-                        "title": "Size (MB)"
+                        "minimum": 0
                     },
                     "owner": {
                         "oneOf": [
@@ -275662,15 +275755,13 @@
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Memory (MB)"
+                        "nullable": true
                     },
                     "disk": {
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Disk (MB)"
+                        "nullable": true
                     },
                     "description": {
                         "type": "string",
@@ -275926,15 +276017,13 @@
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Memory (MB)"
+                        "nullable": true
                     },
                     "disk": {
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Disk (MB)"
+                        "nullable": true
                     },
                     "description": {
                         "type": "string",
@@ -277220,14 +277309,15 @@
                             "trunk-4c6p",
                             "trunk-4c8p",
                             "trunk-8c4p",
+                            "breakout-1c2p-2c1p",
                             "breakout-1c4p-4c1p",
                             "breakout-1c6p-6c1p",
                             "breakout-2c4p-8c1p-shuffle",
                             ""
                         ],
                         "type": "string",
-                        "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
-                        "x-spec-enum-id": "5e0f85310f0184ea"
+                        "description": "* `single-1c1p` - 1C1P\n* `single-1c2p` - 1C2P\n* `single-1c4p` - 1C4P\n* `single-1c6p` - 1C6P\n* `single-1c8p` - 1C8P\n* `single-1c12p` - 1C12P\n* `single-1c16p` - 1C16P\n* `trunk-2c1p` - 2C1P trunk\n* `trunk-2c2p` - 2C2P trunk\n* `trunk-2c4p` - 2C4P trunk\n* `trunk-2c4p-shuffle` - 2C4P trunk (shuffle)\n* `trunk-2c6p` - 2C6P trunk\n* `trunk-2c8p` - 2C8P trunk\n* `trunk-2c12p` - 2C12P trunk\n* `trunk-4c1p` - 4C1P trunk\n* `trunk-4c2p` - 4C2P trunk\n* `trunk-4c4p` - 4C4P trunk\n* `trunk-4c4p-shuffle` - 4C4P trunk (shuffle)\n* `trunk-4c6p` - 4C6P trunk\n* `trunk-4c8p` - 4C8P trunk\n* `trunk-8c4p` - 8C4P trunk\n* `breakout-1c2p-2c1p` - 1C2P:2C1P breakout\n* `breakout-1c4p-4c1p` - 1C4P:4C1P breakout\n* `breakout-1c6p-6c1p` - 1C6P:6C1P breakout\n* `breakout-2c4p-8c1p-shuffle` - 2C4P:8C1P breakout (shuffle)",
+                        "x-spec-enum-id": "f566e6df6572f5d0"
                     },
                     "tenant": {
                         "oneOf": [
@@ -285520,15 +285610,13 @@
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Memory (MB)"
+                        "nullable": true
                     },
                     "disk": {
                         "type": "integer",
                         "maximum": 2147483647,
                         "minimum": 0,
-                        "nullable": true,
-                        "title": "Disk (MB)"
+                        "nullable": true
                     },
                     "description": {
                         "type": "string",

+ 26 - 0
docs/release-notes/version-4.5.md

@@ -1,5 +1,31 @@
 # NetBox v4.5
 
+## v4.5.7 (2026-04-03)
+
+### Enhancements
+
+* [#21095](https://github.com/netbox-community/netbox/issues/21095) - Adopt IEC unit labels (e.g. GiB) for virtual machine resources
+* [#21696](https://github.com/netbox-community/netbox/issues/21696) - Add support for django-rq 4.0 and introduce `RQ` configuration parameter
+* [#21701](https://github.com/netbox-community/netbox/issues/21701) - Support uploading custom scripts via the REST API (`/api/extras/scripts/upload/`)
+* [#21760](https://github.com/netbox-community/netbox/issues/21760) - Add a 1C2P:2C1P breakout cable profile
+
+### Performance Improvements
+
+* [#21655](https://github.com/netbox-community/netbox/issues/21655) - Optimize queries for object and multi-object type custom fields
+
+### Bug Fixes
+
+* [#20474](https://github.com/netbox-community/netbox/issues/20474) - Fix installation of modules with placeholder values in component names
+* [#21498](https://github.com/netbox-community/netbox/issues/21498) - Fix server error triggered by event rules referencing deleted objects
+* [#21533](https://github.com/netbox-community/netbox/issues/21533) - Ensure read-only fields are included in REST API responses upon object creation
+* [#21535](https://github.com/netbox-community/netbox/issues/21535) - Fix filtering of object-type custom fields when "is empty" is selected
+* [#21784](https://github.com/netbox-community/netbox/issues/21784) - Fix `AttributeError` exception when sorting a table as an anonymous user
+* [#21808](https://github.com/netbox-community/netbox/issues/21808) - Fix `RelatedObjectDoesNotExist` exception when viewing an interface with a virtual circuit termination
+* [#21810](https://github.com/netbox-community/netbox/issues/21810) - Fix `AttributeError` exception when viewing virtual chassis member
+* [#21825](https://github.com/netbox-community/netbox/issues/21825) - Fix sorting by broken columns in several object lists
+
+---
+
 ## v4.5.6 (2026-03-31)
 
 ### Enhancements

+ 2 - 2
netbox/release.yaml

@@ -1,3 +1,3 @@
-version: "4.5.6"
+version: "4.5.7"
 edition: "Community"
-published: "2026-03-31"
+published: "2026-04-03"

TEMPAT SAMPAH
netbox/translations/cs/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/cs/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/da/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/da/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/de/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 277 - 297
netbox/translations/de/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/es/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/es/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/fr/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 281 - 300
netbox/translations/fr/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/it/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/it/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/ja/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 273 - 295
netbox/translations/ja/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/lv/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/lv/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/nl/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/nl/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/pl/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/pl/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/pt/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/pt/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/ru/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/ru/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/tr/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/tr/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/uk/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 275 - 295
netbox/translations/uk/LC_MESSAGES/django.po


TEMPAT SAMPAH
netbox/translations/zh/LC_MESSAGES/django.mo


File diff ditekan karena terlalu besar
+ 274 - 295
netbox/translations/zh/LC_MESSAGES/django.po


+ 1 - 1
pyproject.toml

@@ -3,7 +3,7 @@
 
 [project]
 name = "netbox"
-version = "4.5.6"
+version = "4.5.7"
 requires-python = ">=3.12"
 description = "The premier source of truth powering network automation."
 readme = "README.md"

+ 4 - 4
requirements.txt

@@ -1,7 +1,7 @@
 colorama==0.4.6
 Django==5.2.12
 django-cors-headers==4.9.0
-django-debug-toolbar==6.2.0
+django-debug-toolbar==6.3.0
 django-filter==25.2
 django-graphiql-debug-toolbar==0.2.0
 django-htmx==1.27.0
@@ -17,7 +17,7 @@ django-taggit==6.1.0
 django-timezone-field==7.2.1
 djangorestframework==3.16.1
 drf-spectacular==0.29.0
-drf-spectacular-sidecar==2026.3.1
+drf-spectacular-sidecar==2026.4.1
 feedparser==6.0.12
 gunicorn==25.3.0
 Jinja2==3.1.6
@@ -29,7 +29,7 @@ mkdocstrings==1.0.3
 mkdocstrings-python==2.0.3
 netaddr==1.3.0
 nh3==0.3.4
-Pillow==12.1.1
+Pillow==12.2.0
 psycopg[c,pool]==3.3.3
 PyYAML==6.0.3
 requests==2.33.1
@@ -41,4 +41,4 @@ strawberry-graphql==0.312.2
 strawberry-graphql-django==0.82.1
 svgwrite==1.4.3
 tablib==3.9.0
-tzdata==2025.3
+tzdata==2026.1

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini