Jeremy Stretch 6 часов назад
Родитель
Сommit
aa1d49d0f5
3 измененных файлов с 191 добавлено и 4 удалено
  1. 183 1
      contrib/openapi.json
  2. 6 1
      docs/release-notes/version-4.7.md
  3. 2 2
      netbox/release.yaml

+ 183 - 1
contrib/openapi.json

@@ -2,7 +2,7 @@
     "openapi": "3.0.3",
     "openapi": "3.0.3",
     "info": {
     "info": {
         "title": "NetBox REST API",
         "title": "NetBox REST API",
-        "version": "4.7.0-beta1",
+        "version": "4.7.0-beta2",
         "license": {
         "license": {
             "name": "Apache v2 License"
             "name": "Apache v2 License"
         }
         }
@@ -159927,6 +159927,163 @@
                             "type": "integer"
                             "type": "integer"
                         }
                         }
                     },
                     },
+                    {
+                        "in": "query",
+                        "name": "status",
+                        "schema": {
+                            "type": "string",
+                            "x-spec-enum-id": "0b370227c3205532",
+                            "enum": [
+                                "active",
+                                "deleting",
+                                "null",
+                                "provisioning"
+                            ]
+                        },
+                        "description": "Operational state of the field\n\n* `active` - Active\n* `provisioning` - Provisioning\n* `deleting` - Deleting"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__empty",
+                        "schema": {
+                            "type": "boolean"
+                        }
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__ic",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__ie",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__iew",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__iregex",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__isw",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__n",
+                        "schema": {
+                            "type": "string",
+                            "x-spec-enum-id": "0b370227c3205532",
+                            "enum": [
+                                "active",
+                                "deleting",
+                                "null",
+                                "provisioning"
+                            ]
+                        },
+                        "description": "Operational state of the field\n\n* `active` - Active\n* `provisioning` - Provisioning\n* `deleting` - Deleting"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__nic",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__nie",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__niew",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__nisw",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
+                    {
+                        "in": "query",
+                        "name": "status__regex",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        },
+                        "explode": true,
+                        "style": "form"
+                    },
                     {
                     {
                         "in": "query",
                         "in": "query",
                         "name": "type",
                         "name": "type",
@@ -296459,6 +296616,30 @@
                         ],
                         ],
                         "nullable": true
                         "nullable": true
                     },
                     },
+                    "status": {
+                        "type": "object",
+                        "properties": {
+                            "value": {
+                                "enum": [
+                                    "active",
+                                    "provisioning",
+                                    "deleting"
+                                ],
+                                "type": "string",
+                                "description": "* `active` - Active\n* `provisioning` - Provisioning\n* `deleting` - Deleting",
+                                "x-spec-enum-id": "0b370227c3205532"
+                            },
+                            "label": {
+                                "type": "string",
+                                "enum": [
+                                    "Active",
+                                    "Provisioning",
+                                    "Deleting"
+                                ]
+                            }
+                        },
+                        "readOnly": true
+                    },
                     "owner": {
                     "owner": {
                         "allOf": [
                         "allOf": [
                             {
                             {
@@ -296492,6 +296673,7 @@
                     "last_updated",
                     "last_updated",
                     "name",
                     "name",
                     "object_types",
                     "object_types",
+                    "status",
                     "type",
                     "type",
                     "url"
                     "url"
                 ]
                 ]

+ 6 - 1
docs/release-notes/version-4.7.md

@@ -1,6 +1,6 @@
 # NetBox v4.7
 # NetBox v4.7
 
 
-## v4.7.0-beta1 (2026-08-17)
+## v4.7.0-beta2 (2026-08-26)
 
 
 !!! danger "Not for Production Use"
 !!! danger "Not for Production Use"
     This is a beta release of NetBox intended for testing and evaluation. **Do not use this software in production.** Also be aware that no upgrade path is provided to future releases.
     This is a beta release of NetBox intended for testing and evaluation. **Do not use this software in production.** Also be aware that no upgrade path is provided to future releases.
@@ -34,6 +34,7 @@
 * Webhooks now support a configurable timeout. If you have lowered `RQ_DEFAULT_TIMEOUT` to 60 seconds or less, you must also set [`WEBHOOK_DEFAULT_TIMEOUT`](../configuration/miscellaneous.md#webhook_default_timeout) to a lower value; NetBox will refuse to start otherwise.
 * Webhooks now support a configurable timeout. If you have lowered `RQ_DEFAULT_TIMEOUT` to 60 seconds or less, you must also set [`WEBHOOK_DEFAULT_TIMEOUT`](../configuration/miscellaneous.md#webhook_default_timeout) to a lower value; NetBox will refuse to start otherwise.
 * Specifying an email server under the [`EMAIL`](../configuration/system.md#email) configuration parameter is now mandatory in order to send mail: A deployment which does not define `EMAIL['SERVER']` will raise an `InvalidMailer` exception when attempting to send, rather than failing at the SMTP connection.
 * Specifying an email server under the [`EMAIL`](../configuration/system.md#email) configuration parameter is now mandatory in order to send mail: A deployment which does not define `EMAIL['SERVER']` will raise an `InvalidMailer` exception when attempting to send, rather than failing at the SMTP connection.
 * The upgrade script now runs the `rebuild_config_context_cache` management command to populate the new config context cache. This may extend the duration of the upgrade for deployments with a large number of devices and virtual machines.
 * The upgrade script now runs the `rebuild_config_context_cache` management command to populate the new config context cache. This may extend the duration of the upgrade for deployments with a large number of devices and virtual machines.
+* Creating a custom field which has a default value, and deleting a custom field, are now deferred to a background job where the field's assigned object types hold more than [`BULK_UPDATE_CHUNK_SIZE`](../configuration/system.md#bulk_update_chunk_size) objects in total.
 * The obsolete `populate_custom_field_defaults()` method has been removed from `CustomFieldsMixin`.
 * The obsolete `populate_custom_field_defaults()` method has been removed from `CustomFieldsMixin`.
 * `CustomField.objects.get_for_model()` and the `custom_fields` property of `CustomFieldsMixin` now return a list rather than a queryset, and `get_for_model()` returns only those fields which are active: Any whose stored data is being updated by a background job is omitted (see [field status](../customization/custom-fields.md#field-status)) unless selected via its `statuses` argument.
 * `CustomField.objects.get_for_model()` and the `custom_fields` property of `CustomFieldsMixin` now return a list rather than a queryset, and `get_for_model()` returns only those fields which are active: Any whose stored data is being updated by a background job is omitted (see [field status](../customization/custom-fields.md#field-status)) unless selected via its `statuses` argument.
 * Removal of deprecated behavior
 * Removal of deprecated behavior
@@ -104,6 +105,7 @@ Event rule conditions can now inspect the pre-change and post-change snapshots c
 * [#22441](https://github.com/netbox-community/netbox/issues/22441) - Record and display the execution time of each background job
 * [#22441](https://github.com/netbox-community/netbox/issues/22441) - Record and display the execution time of each background job
 * [#22446](https://github.com/netbox-community/netbox/issues/22446) - Introduce breadcrumbs support for declarative layouts
 * [#22446](https://github.com/netbox-community/netbox/issues/22446) - Introduce breadcrumbs support for declarative layouts
 * [#22486](https://github.com/netbox-community/netbox/issues/22486) - Support a configurable timeout for webhooks, with a new `WEBHOOK_DEFAULT_TIMEOUT` configuration parameter
 * [#22486](https://github.com/netbox-community/netbox/issues/22486) - Support a configurable timeout for webhooks, with a new `WEBHOOK_DEFAULT_TIMEOUT` configuration parameter
+* [#22563](https://github.com/netbox-community/netbox/issues/22563) - Preserve the scroll position of the sidebar navigation when moving between pages
 * [#22595](https://github.com/netbox-community/netbox/issues/22595) - Introduce the [`BULK_UPDATE_CHUNK_SIZE`](../configuration/system.md#bulk_update_chunk_size) configuration parameter to bound the number of rows affected by a single bulk `UPDATE` statement
 * [#22595](https://github.com/netbox-community/netbox/issues/22595) - Introduce the [`BULK_UPDATE_CHUNK_SIZE`](../configuration/system.md#bulk_update_chunk_size) configuration parameter to bound the number of rows affected by a single bulk `UPDATE` statement
 * [#22604](https://github.com/netbox-community/netbox/issues/22604) - Document the experimental Python package installation and upgrade workflow
 * [#22604](https://github.com/netbox-community/netbox/issues/22604) - Document the experimental Python package installation and upgrade workflow
 * [#22607](https://github.com/netbox-community/netbox/issues/22607) - Sanitize the HTTP request passed to the template context when rendering custom links
 * [#22607](https://github.com/netbox-community/netbox/issues/22607) - Sanitize the HTTP request passed to the template context when rendering custom links
@@ -111,6 +113,7 @@ Event rule conditions can now inspect the pre-change and post-change snapshots c
 * [#22757](https://github.com/netbox-community/netbox/issues/22757) - Support arbitrary help text on inline form fields
 * [#22757](https://github.com/netbox-community/netbox/issues/22757) - Support arbitrary help text on inline form fields
 * [#22786](https://github.com/netbox-community/netbox/issues/22786) - Publish NetBox releases to the production Python Package Index (PyPI)
 * [#22786](https://github.com/netbox-community/netbox/issues/22786) - Publish NetBox releases to the production Python Package Index (PyPI)
 * [#22851](https://github.com/netbox-community/netbox/issues/22851) - Unpin `social-auth-core` to permit the installation of newer PyJWT versions
 * [#22851](https://github.com/netbox-community/netbox/issues/22851) - Unpin `social-auth-core` to permit the installation of newer PyJWT versions
+* [#23010](https://github.com/netbox-community/netbox/issues/23010) - Defer the provisioning of default and purging of stale custom field data to a background job
 
 
 ### Performance Improvements
 ### Performance Improvements
 
 
@@ -217,6 +220,7 @@ Event rule conditions can now inspect the pre-change and post-change snapshots c
     * Add optional decimal field `cooling_capacity`
     * Add optional decimal field `cooling_capacity`
 * `extras.CustomField`
 * `extras.CustomField`
     * Add boolean field `nulls_first`
     * Add boolean field `nulls_first`
+    * Add read-only choice field `status`
 * `extras.EventRule`
 * `extras.EventRule`
     * Add read-only boolean field `action_is_available`
     * Add read-only boolean field `action_is_available`
     * The `action_object_type` field is now optional, and is no longer restricted to object types which support event rules
     * The `action_object_type` field is now optional, and is no longer restricted to object types which support event rules
@@ -251,4 +255,5 @@ Event rule conditions can now inspect the pre-change and post-change snapshots c
 * The members of `ServiceProtocolEnum` have been renamed from `ROLE_TCP`, `ROLE_UDP`, and `ROLE_SCTP` to `TCP`, `UDP`, and `SCTP`
 * The members of `ServiceProtocolEnum` have been renamed from `ROLE_TCP`, `ROLE_UDP`, and `ROLE_SCTP` to `TCP`, `UDP`, and `SCTP`
 * Interface & interface template types now expose the `channels` and `channel_id` fields
 * Interface & interface template types now expose the `channels` and `channel_id` fields
 * Device, device type, module type, rack, and rack type types now expose their new cooling fields, and new enums have been introduced for the cooling choice sets
 * Device, device type, module type, rack, and rack type types now expose their new cooling fields, and new enums have been introduced for the cooling choice sets
+* The custom field type and filter now expose the new `status` field, with a corresponding `CustomFieldStatusEnum`
 * Plugins may now extend core output types and filters (see the [plugin GraphQL API documentation](../plugins/development/graphql-api.md))
 * Plugins may now extend core output types and filters (see the [plugin GraphQL API documentation](../plugins/development/graphql-api.md))

+ 2 - 2
netbox/release.yaml

@@ -1,4 +1,4 @@
 version: "4.7.0"
 version: "4.7.0"
 edition: "Community"
 edition: "Community"
-published: "2026-08-17"
-designation: "beta1"
+published: "2026-08-26"
+designation: "beta2"