Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v4.1.0 #17350

Merged
merged 118 commits into from
Sep 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
5016936
Closes #16359: Add navbar() method to PluginTemplateExtension
jeremystretch Jun 4, 2024
1952d3e
Merge branch 'develop' into feature
arthanson Jun 6, 2024
c6bd714
Closes #15908: Establish canonical & local sources for release info (…
jeremystretch Jun 7, 2024
c7176e8
15410 removed deprecated filters (#16410)
arthanson Jun 7, 2024
4da5bd6
#15908: Update upgrade.sh
jeremystretch Jun 7, 2024
c1d7696
14692 Convert VM disk size (#16434)
arthanson Jun 11, 2024
c6553c4
7537 add serial number to virtual machines (#16407)
arthanson Jun 12, 2024
853d990
Closes #16388: Move change logging resources from `extras` to `core` …
jeremystretch Jun 17, 2024
e12edd7
#16388: Fix migration bug
jeremystretch Jun 17, 2024
91dcecb
15106 Add Length Field to Wireless Link (#16528)
arthanson Jun 17, 2024
388ba3d
#16388: Rename database indexes & constraints
jeremystretch Jun 17, 2024
6819186
Start release notes for v4.1
jeremystretch Jun 18, 2024
08ac5cd
Merge branch 'develop' into feature
jeremystretch Jun 24, 2024
2b4577e
Closes #8198: Custom field uniqueness (#16661)
jeremystretch Jun 25, 2024
5254660
15156 Add display_url to REST API (#16412)
arthanson Jun 25, 2024
c22463f
Closes #16580: Remove `AUTH_EXEMPT_PATHS` (#16662)
jeremystretch Jun 26, 2024
82d8de3
Closes #16726: Extend PluginTemplateExtension to allow registering mu…
jeremystretch Jul 1, 2024
5ac5135
8984 Allow script log to be filtered (#16446)
arthanson Jul 1, 2024
616f6f6
#16726: Fix cotent registration bug
jeremystretch Jul 3, 2024
12cd2a7
Changelog for #8984, #15156, #16580, #16726
jeremystretch Jul 3, 2024
02ae915
Merge branch 'develop' into feature
jeremystretch Jul 9, 2024
1c2336b
Closes #16776: Extend PluginTemplateExtension to render custom alerts…
jeremystretch Jul 12, 2024
b0e7294
Closes #15621: User notifications (#16800)
jeremystretch Jul 15, 2024
5a6ffde
12826 Add Rack Type (#16739)
arthanson Jul 16, 2024
cf1024a
9627 use ArrayField on VLANGroup for allowed VLANs (#16710)
arthanson Jul 16, 2024
b2c5a46
Introduce datetime_from_timestamp() utility function
jeremystretch Jul 16, 2024
965e781
Closes #16884: Remove ID column from ObjectChangeTable defaults
jeremystretch Jul 19, 2024
1acb990
#16359: Include plugin nav content on mobile view
jeremystretch Jul 19, 2024
4a53a96
#15908: Add features attribute to ReleaseInfo
jeremystretch Jul 19, 2024
44a9350
Closes #16886: Dynamic event types (#16938)
jeremystretch Jul 22, 2024
f7fdfdd
#16866: Fix handling of job start/stop events
jeremystretch Jul 22, 2024
8237c6a
7025 circuit redundancy (#16945)
arthanson Jul 24, 2024
909ee7d
Closes #14861: Standardize URL path for virtual disks
jeremystretch Jul 24, 2024
8409ca9
Closes #16928: Add help center button to top nav
jeremystretch Jul 24, 2024
1d6987b
14731 plugins catalog (#16763)
arthanson Jul 25, 2024
e62a422
11969 airflow (#16967)
arthanson Jul 25, 2024
22319b2
Closes #16988: Move rack nav menu items to a dedicated section
jeremystretch Jul 25, 2024
0a1ce79
16992 remove TODO for NetBox 4.1 (#16993)
arthanson Jul 26, 2024
a12fdd6
Merge branch 'develop' into feature
jeremystretch Jul 26, 2024
6508987
Fixes #16782: Add object filtering for custom fields (#16994)
samk-acw Jul 29, 2024
dde84b4
Flesh out v4.1 changelog
jeremystretch Jul 30, 2024
d3a3a6b
15692: Introduce background jobs (#16927)
alehaa Jul 30, 2024
dbd503b
#7025: Misc cleanup
jeremystretch Jul 30, 2024
5f87724
#8198: Fix validation bug
jeremystretch Jul 30, 2024
a63bb6d
#8984: Tweak ordering of log levels; fix invalid level handling
jeremystretch Jul 30, 2024
845888c
#14731: Misc cleanup
jeremystretch Jul 30, 2024
954eadc
#15908: Introduce FeatureSet dataclass for tracking release features
jeremystretch Jul 30, 2024
a3edc04
17032 Convert Virtual Disk Size from GB -> MB (#17033)
arthanson Jul 31, 2024
52692d4
#9627: Fix calculation of available VIDs
jeremystretch Jul 31, 2024
047d717
Add missing table columns
jeremystretch Jul 31, 2024
da7d47d
Add manufacturer filter for Rack; extend RackFilterForm
jeremystretch Jul 31, 2024
8d58503
Misc cleanup
jeremystretch Jul 31, 2024
2168a73
Display manufacturer & model of module type on module view
jeremystretch Jul 31, 2024
5cfa2bb
#15621: Add feature documentation for user notifications
jeremystretch Jul 31, 2024
d1e1601
#16886: Rename Event to EventType
jeremystretch Jul 31, 2024
6e59db7
#16886: Updated documentation for event types
jeremystretch Jul 31, 2024
a49a742
#16886: Misc cleanup
jeremystretch Jul 31, 2024
28b867b
Documentation updates for v4.1
jeremystretch Jul 31, 2024
77d0e90
fix internationalization for string
arthanson Aug 1, 2024
1a64066
For #12826 add tests to RackTest filtersets for manufacturer and Devi…
arthanson Aug 1, 2024
c51e91d
Closes #17048: Replace all calls to get_user_model() with direct impo…
jeremystretch Jul 31, 2024
d6f2fc7
17058 RackType name -> model (#17059)
arthanson Aug 1, 2024
0b77b33
Rename DeviceType.get_full_name to full_name
jeremystretch Aug 1, 2024
149c80a
Merge branch 'develop' into feature
jeremystretch Aug 1, 2024
bf17485
Fix export of system data & include plugins
jeremystretch Aug 1, 2024
e32cfdf
17034 Add error handling to Plugins Catalog API (#17035)
arthanson Aug 1, 2024
8e6987e
#16388: Move change logging signal handlers into core
jeremystretch Aug 1, 2024
80fc9ab
16927: Move JobRunner from utilities to netbox
jeremystretch Aug 1, 2024
472fbdc
Closes #17051: Introduce the `ISOLATED_DEPLOYMENT` config parameter (…
jeremystretch Aug 2, 2024
f3da529
Closes #14656: Dynamically render form fields depending on custom fie…
jeremystretch Aug 2, 2024
02dd1a3
Feature UI (#17069)
jeremystretch Aug 2, 2024
ca63aed
17061 add new models to docs (#17062)
arthanson Aug 2, 2024
57fe207
#15621: Support notifications for deletion of a subscribed object
jeremystretch Aug 2, 2024
796b9e8
Closes #10500: Introduce support for nested modules (#16983)
arthanson Aug 5, 2024
75a0b53
Update source translation strings
github-actions[bot] Aug 2, 2024
23490d3
Release v4.1-beta1
jeremystretch Aug 5, 2024
8b91fb8
Merge branch 'develop' into feature
jeremystretch Aug 14, 2024
c6c0ab2
Fix job details view
alehaa Aug 7, 2024
234b402
Fixes #17098: Prevent automatic deletion of related notifications whe…
jeremystretch Aug 14, 2024
e3d681b
Closes #17143: Deprecate the use of dedicated nested API serializers
jeremystretch Aug 14, 2024
51c3d94
Merge branch 'develop' into feature
jeremystretch Aug 15, 2024
a3befd0
17159 fix plugin install instructions
arthanson Aug 15, 2024
122522a
17163 Fix services list on IPAddress view
arthanson Aug 15, 2024
93a13ce
17169 use config_name for matching in plugin catalog (#17172)
arthanson Aug 15, 2024
b6071a8
Closes #16574: Add last_synced time to REST API serializer for data s…
jeremystretch Aug 15, 2024
dd3166a
Fixes #17097: Record static object representation when calling `Notif…
jeremystretch Aug 15, 2024
1504fb5
Closes #17173: Update GraphQL web front end dependencies
jeremystretch Aug 15, 2024
33e8e04
Update change log
jeremystretch Aug 15, 2024
8e70e3a
Update release checklist for v4.1
jeremystretch Aug 15, 2024
3412139
17193 update logo in Readme (#17194)
arthanson Aug 19, 2024
fb6c7d7
17174 add version to plugin catalog (#17192)
arthanson Aug 19, 2024
91df0c0
Closes #17221: Extend ObjectEditView to support HTMX requests
jeremystretch Aug 22, 2024
6f7bf5b
Merge branch 'develop' into feature
jeremystretch Aug 29, 2024
9a11191
#7025: Cleanup
jeremystretch Aug 29, 2024
db6246a
#10500: Cleanup (#17305)
jeremystretch Aug 29, 2024
00d8eb4
#11969: Cleanup (#17308)
jeremystretch Aug 29, 2024
a9a926c
17306 fix vlan group utilization
arthanson Aug 29, 2024
2f53dc0
17302 fix log level filtering
arthanson Aug 29, 2024
cdf2fde
#14692: Correct VirtualDisk model docs
jeremystretch Aug 29, 2024
a09c166
#15106: Put distance & distance_unit on same line in model form
jeremystretch Aug 30, 2024
a6b1f97
#16782: Fix help text on form field
jeremystretch Aug 30, 2024
10a7449
#17143: Update docs for nested serializer use
jeremystretch Aug 30, 2024
af93b47
#17051: Tag ISOLATED_DEPLOYMENT as a v4.1 feature
jeremystretch Aug 30, 2024
b797fcc
Closes #17318: Include provider in nested API representation of circuits
jeremystretch Aug 30, 2024
829bef0
11969 remove airflow from racktype (#17324)
arthanson Aug 30, 2024
6db2988
Update changelog
jeremystretch Aug 30, 2024
8fff4e2
12826 make RackType.form_factor required (#17327)
arthanson Aug 30, 2024
b4dd57f
#8198: Rename CustomField.validation_unique to unique (#17325)
jeremystretch Aug 30, 2024
00874ac
17289 enforce minimum password strength (#17299)
arthanson Aug 30, 2024
31d5d8c
Fixes #17301: Fix script module edit & delete button styling (#17328)
jeremystretch Sep 2, 2024
56f110c
Closes #17288: Limit the number of aliases within a GraphQL API reque…
jeremystretch Sep 2, 2024
ce33e0b
Fixes: #17320 - New screenshots for 4.1 UI (#17331)
bctiemann Sep 3, 2024
a777850
Merge branch 'develop' into feature
jeremystretch Sep 3, 2024
7c0bdf3
#17289: Document new default configuration
jeremystretch Sep 3, 2024
39c5f57
Fix broken link
jeremystretch Sep 3, 2024
16dfafa
Update changelog
jeremystretch Sep 3, 2024
8707c44
Merge pull request #17349 from netbox-community/feature
jeremystretch Sep 3, 2024
9cfb3bf
Release v4.1.0
jeremystretch Sep 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ body:
attributes:
label: NetBox Version
description: What version of NetBox are you currently running?
placeholder: v4.0.11
placeholder: v4.1.0
validations:
required: true
- type: dropdown
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ body:
attributes:
label: NetBox version
description: What version of NetBox are you currently running?
placeholder: v4.0.11
placeholder: v4.1.0
validations:
required: true
- type: dropdown
Expand Down
17 changes: 17 additions & 0 deletions docs/configuration/graphql-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# GraphQL API Parameters

## GRAPHQL_ENABLED

!!! tip "Dynamic Configuration Parameter"

Default: True

Setting this to False will disable the GraphQL API.

---

## GRAPHQL_MAX_ALIASES

Default: 10

The maximum number of queries that a GraphQL API request may contain.
2 changes: 1 addition & 1 deletion docs/configuration/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Some configuration parameters are primarily controlled via NetBox's admin interf
* [`CUSTOM_VALIDATORS`](./data-validation.md#custom_validators)
* [`DEFAULT_USER_PREFERENCES`](./default-values.md#default_user_preferences)
* [`ENFORCE_GLOBAL_UNIQUE`](./miscellaneous.md#enforce_global_unique)
* [`GRAPHQL_ENABLED`](./miscellaneous.md#graphql_enabled)
* [`GRAPHQL_ENABLED`](./graphql-api.md#graphql_enabled)
* [`JOB_RETENTION`](./miscellaneous.md#job_retention)
* [`MAINTENANCE_MODE`](./miscellaneous.md#maintenance_mode)
* [`MAPS_URL`](./miscellaneous.md#maps_url)
Expand Down
10 changes: 0 additions & 10 deletions docs/configuration/miscellaneous.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,16 +122,6 @@ The maximum amount (in bytes) of uploaded data that will be held in memory befor

---

## GRAPHQL_ENABLED

!!! tip "Dynamic Configuration Parameter"

Default: True

Setting this to False will disable the GraphQL API.

---

## JOB_RETENTION

!!! tip "Dynamic Configuration Parameter"
Expand Down
20 changes: 15 additions & 5 deletions docs/configuration/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,29 @@ A list of permitted URL schemes referenced when rendering links within NetBox. N

## AUTH_PASSWORD_VALIDATORS

This parameter acts as a pass-through for configuring Django's built-in password validators for local user accounts. If configured, these will be applied whenever a user's password is updated to ensure that it meets minimum criteria such as length or complexity. An example is provided below. For more detail on the available options, please see [the Django documentation](https://docs.djangoproject.com/en/stable/topics/auth/passwords/#password-validation).
This parameter acts as a pass-through for configuring Django's built-in password validators for local user accounts. These rules are applied whenever a user's password is created or updated to ensure that it meets minimum criteria such as length or complexity. The default configuration is shown below.

```python
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
'OPTIONS': {
'min_length': 10,
}
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
"OPTIONS": {
"min_length": 12,
},
},
{
"NAME": "utilities.password_validation.AlphanumericPasswordValidator",
},
]
```

The default configuration enforces the follow criteria:

* A password must be at least 12 characters in length.
* A password must have at least one uppercase letter, one lowercase letter, and one numeric digit.

Although it is not recommended, the default validation rules can be disabled by setting `AUTH_PASSWORD_VALIDATORS = []` in the configuration file. For more detail on customizing password validation, please see [the Django documentation](https://docs.djangoproject.com/en/stable/topics/auth/passwords/#password-validation).

---

## CORS_ORIGIN_ALLOW_ALL
Expand Down
15 changes: 14 additions & 1 deletion docs/configuration/system.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,19 @@ addresses (and [`DEBUG`](./development.md#debug) is true).

---

## ISOLATED_DEPLOYMENT

!!! info "This feature was introduced in NetBox v4.1."

Default: False

Set this configuration parameter to True for NetBox deployments which do not have Internet access. This will disable miscellaneous functionality which depends on access to the Internet.

!!! note
If Internet access is available via a proxy, set [`HTTP_PROXIES`](#http_proxies) instead.

---

## JINJA2_FILTERS

Default: `{}`
Expand Down Expand Up @@ -143,7 +156,7 @@ LOGGING = {

## MEDIA_ROOT

Default: $INSTALL_ROOT/netbox/media/
Default: `$INSTALL_ROOT/netbox/media/`

The file path to the location where media files (such as image attachments) are stored. By default, this is the `netbox/media/` directory within the base NetBox installation path.

Expand Down
2 changes: 2 additions & 0 deletions docs/customization/custom-fields.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ If a default value is specified for a selection field, it must exactly match one

An object or multi-object custom field can be used to refer to a particular NetBox object or objects as the "value" for a custom field. These custom fields must define an `object_type`, which determines the type of object to which custom field instances point.

By default, an object choice field will make all objects of that type available for selection in the drop-down. The list choices can be filtered to show only objects with certain values by providing a `query_params` dict in the Related Object Filter field, as a JSON value. More information about `query_params` can be found [here](./custom-scripts.md#objectvar).

## Custom Fields in Templates

Several features within NetBox, such as export templates and webhooks, utilize Jinja2 templating. For convenience, objects which support custom field assignment expose custom field data through the `cf` property. This is a bit cleaner than accessing custom field data through the actual field (`custom_field_data`).
Expand Down
4 changes: 0 additions & 4 deletions docs/customization/custom-validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,6 @@ CUSTOM_VALIDATORS = {

#### Referencing Related Object Attributes

!!! info "This feature was introduced in NetBox v4.0."

The attributes of a related object can be referenced by specifying a dotted path. For example, to reference the name of a region to which a site is assigned, use `region.name`:

```python
Expand All @@ -104,8 +102,6 @@ CUSTOM_VALIDATORS = {

#### Validating Request Parameters

!!! info "This feature was introduced in NetBox v4.0."

In addition to validating object attributes, custom validators can also match against parameters of the current request (where available). For example, the following rule will permit only the user named "admin" to modify an object:

```json
Expand Down
1 change: 0 additions & 1 deletion docs/development/adding-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ Add the relevant navigation menu items in `netbox/netbox/navigation/menu.py`.
Create the following for each model:

* Detailed (full) model serializer in `api/serializers.py`
* Nested serializer in `api/nested_serializers.py`
* API view in `api/views.py`
* Endpoint route in `api/urls.py`

Expand Down
2 changes: 1 addition & 1 deletion docs/development/extending-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ If you're adding a relational field (e.g. `ForeignKey`) and intend to include th

## 5. Update API serializer

Extend the model's API serializer in `<app>.api.serializers` to include the new field. In most cases, it will not be necessary to also extend the nested serializer, which produces a minimal representation of the model.
Extend the model's API serializer in `<app>.api.serializers` to include the new field.

## 6. Add fields to forms

Expand Down
15 changes: 14 additions & 1 deletion docs/development/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Depending on its classification, each NetBox model may support various features
| [Custom links](../customization/custom-links.md) | `CustomLinksMixin` | `custom_links` | These models support the assignment of custom links |
| [Custom validation](../customization/custom-validation.md) | `CustomValidationMixin` | - | Supports the enforcement of custom validation rules |
| [Export templates](../customization/export-templates.md) | `ExportTemplatesMixin` | `export_templates` | Users can create custom export templates for these models |
| [Job results](../features/background-jobs.md) | `JobsMixin` | `jobs` | Users can create custom export templates for these models |
| [Job results](../features/background-jobs.md) | `JobsMixin` | `jobs` | Background jobs can be scheduled for these models |
| [Journaling](../features/journaling.md) | `JournalingMixin` | `journaling` | These models support persistent historical commentary |
| [Synchronized data](../integrations/synchronized-data.md) | `SyncedDataMixin` | `synced_data` | Certain model data can be automatically synchronized from a remote data source |
| [Tagging](../models/extras/tag.md) | `TagsMixin` | `tags` | The models can be tagged with user-defined tags |
Expand All @@ -34,7 +34,9 @@ These are considered the "core" application models which are used to model netwo
* [circuits.Provider](../models/circuits/provider.md)
* [circuits.ProviderAccount](../models/circuits/provideraccount.md)
* [circuits.ProviderNetwork](../models/circuits/providernetwork.md)
* [core.DataFile](../models/core/datafile.md)
* [core.DataSource](../models/core/datasource.md)
* [core.Job](../models/core/job.md)
* [dcim.Cable](../models/dcim/cable.md)
* [dcim.Device](../models/dcim/device.md)
* [dcim.DeviceType](../models/dcim/devicetype.md)
Expand All @@ -44,12 +46,14 @@ These are considered the "core" application models which are used to model netwo
* [dcim.PowerPanel](../models/dcim/powerpanel.md)
* [dcim.Rack](../models/dcim/rack.md)
* [dcim.RackReservation](../models/dcim/rackreservation.md)
* [dcim.RackType](../models/dcim/racktype.md)
* [dcim.Site](../models/dcim/site.md)
* [dcim.VirtualChassis](../models/dcim/virtualchassis.md)
* [dcim.VirtualDeviceContext](../models/dcim/virtualdevicecontext.md)
* [ipam.Aggregate](../models/ipam/aggregate.md)
* [ipam.ASN](../models/ipam/asn.md)
* [ipam.FHRPGroup](../models/ipam/fhrpgroup.md)
* [ipam.FHRPGroupAssignment](../models/ipam/fhrpgroupassignment.md)
* [ipam.IPAddress](../models/ipam/ipaddress.md)
* [ipam.IPRange](../models/ipam/iprange.md)
* [ipam.Prefix](../models/ipam/prefix.md)
Expand All @@ -76,6 +80,7 @@ These are considered the "core" application models which are used to model netwo

Organization models are used to organize and classify primary models.

* [circuits.CircuitGroup](../models/circuits/circuitgroup.md)
* [circuits.CircuitType](../models/circuits/circuittype.md)
* [dcim.DeviceRole](../models/dcim/devicerole.md)
* [dcim.Manufacturer](../models/dcim/manufacturer.md)
Expand All @@ -88,6 +93,7 @@ Organization models are used to organize and classify primary models.
* [tenancy.ContactRole](../models/tenancy/contactrole.md)
* [virtualization.ClusterGroup](../models/virtualization/clustergroup.md)
* [virtualization.ClusterType](../models/virtualization/clustertype.md)
* [vpn.TunnelGroup](../models/vpn/tunnelgroup.md)

### Nested Group Models

Expand Down Expand Up @@ -131,3 +137,10 @@ These function as templates to effect the replication of device and virtual mach
* [dcim.PowerOutletTemplate](../models/dcim/poweroutlettemplate.md)
* [dcim.PowerPortTemplate](../models/dcim/powerporttemplate.md)
* [dcim.RearPortTemplate](../models/dcim/rearporttemplate.md)

### Connection Models

Connection models are used to model the connections, or connection endpoints between models.

* [circuits.CircuitTermination](../models/circuits/circuittermination.md)
* [vpn.TunnelTermination](../models/vpn/tunneltermination.md)
18 changes: 4 additions & 14 deletions docs/development/release-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

This documentation describes the process of packaging and publishing a new NetBox release. There are three types of release:

* Major release (e.g. v2.11 to v3.0)
* Minor release (e.g. v3.2 to v3.3)
* Patch release (e.g. v3.3.0 to v3.3.1)
* Major release (e.g. v3.7.8 to v4.0.0)
* Minor release (e.g. v4.0.10 to v4.1.0)
* Patch release (e.g. v4.1.0 to v4.1.1)

While major releases generally introduce some very substantial change to the application, they are typically treated the same as minor version increments for the purpose of release packaging.

Expand Down Expand Up @@ -90,7 +90,7 @@ Updated language translations should be pulled from [Transifex](https://app.tran

### Update Version and Changelog

* Update the `VERSION` constant in `settings.py` to the new release version.
* Update the version and published date in `release.yaml` with the current version & date. Add a designation (e.g.g `beta1`) if applicable.
* Update the example version numbers in the feature request and bug report templates under `.github/ISSUE_TEMPLATES/`.
* Replace the "FUTURE" placeholder in the release notes with the current date.

Expand All @@ -117,16 +117,6 @@ Create a [new release](https://github.com/netbox-community/netbox/releases/new)

Once created, the release will become available for users to install.

### Update the Development Version

On the `develop` branch, update `VERSION` in `settings.py` to point to the next release. For example, if you just released v3.3.1, set:

```
VERSION = 'v3.3.2-dev'
```

Commit this change with the comment "PRVB" (for _post-release version bump_) and push the commit upstream.

### Update the Public Documentation

After a release has been published, the public NetBox documentation needs to be updated. This is accomplished by running two actions on the [netboxlabs-docs](https://github.com/netboxlabs/netboxlabs-docs) repository.
Expand Down
7 changes: 4 additions & 3 deletions docs/features/event-rules.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Event Rules

NetBox includes the ability to execute certain functions in response to internal object changes. These include:
NetBox includes the ability to automatically perform certain functions in response to internal events. These include:

* [Scripts](../customization/custom-scripts.md) execution
* [Webhooks](../integrations/webhooks.md) execution
* Executing a [custom script](../customization/custom-scripts.md)
* Sending a [webhook](../integrations/webhooks.md)
* Generating [user notifications](../features/notifications.md)

For example, suppose you want to automatically configure a monitoring system to start monitoring a device when its operational status is changed to active, and remove it from monitoring for any other status. You can create a webhook in NetBox for the device model and craft its content and destination URL to effect the desired change on the receiving system. You can then associate an event rule with this webhook and the webhook will be sent automatically by NetBox whenever the configured constraints are met.

Expand Down
4 changes: 4 additions & 0 deletions docs/features/facilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ A site typically represents a building within a region and/or site group. Each s

A location can be any logical subdivision within a building, such as a floor or room. Like regions and site groups, locations can be nested into a self-recursive hierarchy for maximum flexibility. And like sites, each location has an operational status assigned to it.

## Rack Types

A rack type represents a unique specification of a rack which exists in the real world. Each rack type can be setup with weight, height, and unit ordering. New racks of this type can then be created in NetBox, and any associated specifications will be automatically replicated from the device type.

## Racks

Finally, NetBox models each equipment rack as a discrete object within a site and location. These are physical objects into which devices are installed. Each rack can be assigned an operational status, type, facility ID, and other attributes related to inventory tracking. Each rack also must define a height (in rack units) and width, and may optionally specify its physical dimensions.
Expand Down
10 changes: 10 additions & 0 deletions docs/features/notifications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Notifications

!!! info "This feature was introduced in NetBox v4.1."

NetBox includes a system for generating user notifications, which can be marked as read or deleted by individual users. There are two built-in mechanisms for generating a notification:

* A user can subscribe to an object. When that object is modified, a notification is created to inform the user of the change.
* An [event rule](./event-rules.md) can be defined to automatically generate a notification for one or more users in response to specific system events.

Additionally, NetBox plugins can generate notifications for their own purposes.
2 changes: 1 addition & 1 deletion docs/integrations/graphql-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,4 @@ Authorization: Token $TOKEN

## Disabling the GraphQL API

If not needed, the GraphQL API can be disabled by setting the [`GRAPHQL_ENABLED`](../configuration/miscellaneous.md#graphql_enabled) configuration parameter to False and restarting NetBox.
If not needed, the GraphQL API can be disabled by setting the [`GRAPHQL_ENABLED`](../configuration/graphql-api.md#graphql_enabled) configuration parameter to False and restarting NetBox.
6 changes: 3 additions & 3 deletions docs/integrations/rest-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ See the [filtering documentation](../reference/filtering.md) for more details on

## Serialization

The REST API employs two types of serializers to represent model data: base serializers and nested serializers. The base serializer is used to present the complete view of a model. This includes all database table fields which comprise the model, and may include additional metadata. A base serializer includes relationships to parent objects, but **does not** include child objects. For example, the `VLANSerializer` includes a nested representation its parent VLANGroup (if any), but does not include any assigned Prefixes.
The REST API generally represents objects in one of two ways: complete or brief. The base serializer is used to present the complete view of an object. This includes all database table fields which comprise the model, and may include additional metadata. A base serializer includes relationships to parent objects, but **does not** include child objects. For example, the `VLANSerializer` includes a nested representation its parent VLANGroup (if any), but does not include any assigned Prefixes. Serializers employ a minimal "brief" representation of related objects, which includes only the attributes prudent for identifying the object.

```json
{
Expand Down Expand Up @@ -139,7 +139,7 @@ The REST API employs two types of serializers to represent model data: base seri

### Related Objects

Related objects (e.g. `ForeignKey` fields) are represented using nested serializers. A nested serializer provides a minimal representation of an object, including only its direct URL and enough information to display the object to a user. When performing write API actions (`POST`, `PUT`, and `PATCH`), related objects may be specified by either numeric ID (primary key), or by a set of attributes sufficiently unique to return the desired object.
Related objects (e.g. `ForeignKey` fields) are included using nested brief representations. This is a minimal representation of an object, including only its direct URL and enough information to display the object to a user. When performing write API actions (`POST`, `PUT`, and `PATCH`), related objects may be specified by either numeric ID (primary key), or by a set of attributes sufficiently unique to return the desired object.

For example, when creating a new device, its rack can be specified by NetBox ID (PK):

Expand All @@ -151,7 +151,7 @@ For example, when creating a new device, its rack can be specified by NetBox ID
}
```

Or by a set of nested attributes which uniquely identify the rack:
Or by a set of attributes which uniquely identify the rack:

```json
{
Expand Down
Binary file modified docs/media/screenshots/cable-trace.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/media/screenshots/home-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/media/screenshots/home-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/media/screenshots/prefixes-list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/media/screenshots/rack.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions docs/models/circuits/circuitgroup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Circuit Groups

!!! info "This feature was introduced in NetBox v4.1."

[Circuits](./circuit.md) can be arranged into administrative groups for organization. The assignment of a circuit to a group is optional.

## Fields

### Name

A unique human-friendly name.

### Slug

A unique URL-friendly identifier. (This value can be used for filtering.)
Loading
Loading