Commit Graph

65 Commits

Author SHA1 Message Date
Martin Hauser
945e7ade0a Fixes #21407: Enable I (isort) and stabilize import ordering (#21458)
- Adopt Ruff `I` (isort) rules for consistent import sorting
- Add two `# isort: split` boundaries to keep required imports pinned
  in `__init__.py` modules
2026-02-18 10:41:51 -06:00
RobertH1993
01cbdbb968 Closes #18658: Add start on boot field to VirtualMachine model (#20751) 2025-11-12 11:59:01 -08:00
Jason Novinger
5bbab7eb47 Closes #16681: Introduce render_config permission for configuration rendering (#20555)
* Closes #16681: Introduce render_config permission for configuration rendering

Add a new custom permission action `render_config` for rendering device and
virtual machine configurations via the REST API. This allows users to render
configurations without requiring the `add` permission.

Changes:
- Add permission check to RenderConfigMixin.render_config() for devices and VMs
- Update API tests to use render_config permission instead of add
- Add tests verifying permission enforcement (403 without render_config)
- Document new permission requirement in configuration-rendering.md

Note: Currently requires both render_config AND add permissions due to the
automatic POST='add' filter in BaseViewSet.initial(). Removing the add
requirement will be addressed in a follow-up commit.

* Correct permission denied message and enable translation

* Remove add permission requirement for render_config endpoint

Remove the add permission requirement from the render-config API endpoint
while maintaining token write_enabled enforcement as specified in #16681.

Changes:
- Add TokenWritePermission class to check token write ability without requiring
  specific model permissions
- Override get_permissions() in RenderConfigMixin to use TokenWritePermission
  instead of TokenPermissions for render_config action
- Replace queryset restriction: use render_config instead of add
- Remove add permissions from tests - render_config permission now sufficient
- Update tests to expect 404 when permission denied (NetBox standard pattern)

Per #16681: 'requirement for write permission makes sense for API calls
(because we're accepting and processing arbitrary user data), the specific
permission for creating devices does not'

* Add render_config permission to ConfigTemplate render endpoint

Extend render_config permission requirement to the ConfigTemplate render
endpoint per issue comments.

Changes:
- Add TokenWritePermission check via get_permissions() override in
  ConfigTemplateViewSet
- Restrict queryset to render_config permission in render() method
- Add explicit render_config permission check
- Add tests for ConfigTemplate.render() with and without permission
- Update documentation to include ConfigTemplate endpoint

* Address PR feedback on render_config permissions

Remove redundant permission checks, add view permission enforcement via
chained restrict() calls, and rename ConfigTemplate permission action
from render_config to render for consistency.

* Address second round of PR feedback on render_config permissions

- Remove ConfigTemplate view permission check from render_config endpoint
- Add sanity check to TokenWritePermission for non-token auth
- Use named URL patterns instead of string concatenation in tests
- Remove extras.view_configtemplate from test permissions
- Add token write_enabled enforcement tests for all render endpoints

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
2025-10-21 09:26:06 -04:00
Jeremy Stretch
51d046b1f5 Closes #19521: Clean up test suite output (#19524) 2025-05-21 09:57:32 -07:00
Jason Novinger
b8cc2d7116 Fixes #18887: Allows VMInterface object custom field on Prefix (#18945) 2025-03-20 13:55:12 -07:00
Jeremy Stretch
343a4af591 Closes #18022: Extend linter (ruff) to enforce line length limit (120 chars) (#18067)
* Enable E501 rule
* Configure ruff formatter
* Reformat migration files to fix line length violations
* Fix various E501 errors
* Move table template code to template_code.py & ignore E501 errors
* Reformat raw SQL
2024-11-21 15:58:11 -05:00
Arthur Hanson
6dc75d8db1 7699 Add Scope to Cluster (#17848)
* 7699 Add Scope to Cluster

* 7699 Serializer

* 7699 filterset

* 7699 bulk_edit

* 7699 bulk_import

* 7699 model_form

* 7699 graphql, tables

* 7699 fixes

* 7699 fixes

* 7699 fixes

* 7699 fixes

* 7699 fix tests

* 7699 fix graphql tests for clusters reference

* 7699 fix dcim tests

* 7699 fix ipam tests

* 7699 fix tests

* 7699 use mixin for model

* 7699 change mixin name

* 7699 scope form

* 7699 scope form

* 7699 scoped form, fitlerset

* 7699 review changes

* 7699 move ScopedFilterset

* 7699 move CachedScopeMixin

* 7699 review changes

* 7699 review changes

* 7699 refactor mixins

* 7699 _sitegroup -> _site_group

* 7699 update docstring

* Misc cleanup

* Update migrations

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
2024-11-01 14:18:23 -04:00
Jeremy Stretch
8767fd8186 Closes #13428: Q-in-Q VLANs (#17822)
* Initial work on #13428 (QinQ)

* Misc cleanup; add tests for Q-in-Q fields

* Address PR feedback
2024-10-31 14:17:06 -04:00
Daniel Sheppard
4fead1c85f Fixes: #17310 - Properly restrict GraphQL related object queries (#17312)
* Fixes: #17310 - Fix GraphQL restriction of related objects

* Fix some failing tests

* Fix test
2024-08-30 14:22:58 -04:00
Jeremy Stretch
d042e6f69d Closes #15238: Include description field in brief mode 2024-02-26 11:39:31 -05:00
Arthur Hanson
549b0ea107 Closes #8356: Add virtual disk to Virtual Machines (#14087)
* 8356 add virtual disk model

* 8356 add supplemental forms

* 8356 add menu

* 8356 cleanup views

* 8356 virtual machine tab

* 8356 migrations

* 8356 vm disk tables

* 8356 cleanup

* 8356 graphql

* 8356 graphql

* 8356 add components button

* 8356 bulk add on virtualmachine

* 8356 bulk add fixes

* 8356 api tests

* 8356 news tests add rename

* 8356 VirtualDiskCreateForm

* 8356 fix test

* 8356 add todo to remove disk from vm

* 8356 review changes

* 8356 fix test

* 8356 deprecate disk field

* 8356 review changes

* 8356 fix test

* 8356 fix test

* Simplify view actions

* 8356 review changes

* 8356 split trans tag

* 8356 add total virtual disk size to api

* 8356 add virtual disk list to virtual machine detail view

* 8356 move virtual disk size to property

* 8356 revert property

* Tweak display of deprecated disk field

* 8356 render single disk field

* 8356 update serializer

* 8356 model property

* 8356 fix test

* 8356 review changes

* Revert disk space annotation

* Use existing disk field to store aggregate virtual disk size

* Introduce abstract ComponentModel for VM components

* Add search index for VirtualDisk

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
2023-11-17 15:02:56 -05:00
Pavel Korovin
e13bf48a35 Add /api/virtualization/virtual-machines/{id}/render-config/ endpoint (#14287)
* Add /api/virtualization/virtual-machines/{id}/render-config/ endpoint

* Update Docstring "Device" -> "Virtual Machine"

Docstring should mention "..this Virtual Machine" instead of "...this Device", thanks @LuPo!

* Move config rendering logic to new RenderConfigMixin

* Add tests for render-config API endpoint

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
2023-11-17 08:32:58 -05:00
Jeremy Stretch
944008d475 Closes #12135: Prevent the deletion of interfaces with children (#14091)
* Closes #12135: Prevent the deletion of interfaces with children

* Change PROTECT to RESTRICT

* Extend handle_protectederror() to also handle RestrictedError

* Fix string translation

* Update migrations

* Support bulk removal of parent interfaces via UI if all children are included

* Add support for the bulk deletion of restricted objects via REST API
2023-11-01 13:47:14 -04:00
jeremystretch
db42589cca Closes #5303: A virtual machine may be assigned to a site and/or cluster 2022-05-26 14:59:49 -04:00
jeremystretch
b331f047af Closes #8222: Enable the assignment of a VM to a specific host device within a cluster 2022-05-25 16:01:10 -04:00
jeremystretch
64146b8cb1 Closes #8471: Add status field to Cluster 2022-05-19 16:13:22 -04:00
jeremystretch
3651ef53e3 #7852: Extend VRF assignment to VM interfaces 2022-02-07 09:54:00 -05:00
jeremystretch
5193fa6483 Add tests for #6346 2021-10-21 16:57:01 -04:00
jeremystretch
38d7b83ed0 Merge v2.11.9 2021-07-08 12:15:57 -04:00
jeremystretch
7c667f3485 Fixes #6710: Fix assignment of VM interface parent via REST API 2021-07-07 11:55:20 -04:00
jeremystretch
e6091ee0c9 Consolidate GraphQLTestCase into APIViewTestCase 2021-06-30 10:07:33 -04:00
jeremystretch
728b3bac67 Use _list appendix for GraphQL list queries 2021-06-30 09:57:33 -04:00
jeremystretch
605b7c5b3e Add GraphQL for virtualization 2021-06-25 15:31:43 -04:00
Jeremy Stretch
fb48c1f6dd Add 'display' field to all REST API serializers 2021-03-16 10:06:25 -04:00
Jeremy Stretch
2bb79a2773 Add missing bulk update test data 2020-11-02 16:56:04 -05:00
Jeremy Stretch
38ed612cb9 Add test for API bulk updates 2020-09-22 13:50:55 -04:00
Jeremy Stretch
ec66e1a5c0 Closes #4349: Drop support for embedded graphs 2020-08-21 11:57:46 -04:00
Jeremy Stretch
cb36f9fdb3 Remove restriction enforcement from RestrictedQuerySet 2020-07-23 12:48:03 -04:00
Jeremy Stretch
c5362f5931 Fix permissions evaluation for nonstandard tests 2020-07-02 11:43:03 -04:00
Jeremy Stretch
617e20af0b Standardize VMInterfaceTest 2020-06-29 12:06:36 -04:00
Jeremy Stretch
e3820e93b7 Misc cleanup, renaming 2020-06-23 16:39:43 -04:00
Jeremy Stretch
25d6bbf659 Update view and permission names for VMInterface 2020-06-23 14:48:37 -04:00
Jeremy Stretch
75354a8a78 Rename Interface to VMInterface 2020-06-23 13:21:44 -04:00
Jeremy Stretch
6cb31a274f Initial work on #4721 (WIP) 2020-06-22 13:10:56 -04:00
Jeremy Stretch
a8145fe4c2 Add permission assignment to custom test methods 2020-06-08 13:40:46 -04:00
Jeremy Stretch
d3fbaca228 Standardize virtualization API tests 2020-06-05 15:06:08 -04:00
John Anderson
9df238c5f2 Merge branch 'develop' into develop-2.8 2020-03-15 00:18:32 -04:00
Jeremy Stretch
a53f854187 Remove tests for API _choices endpoints 2020-03-12 10:48:53 -04:00
John Anderson
a504f5f309 closes #4340 - Enforce unique constraints for device and virtual machine names in the API 2020-03-10 19:15:24 -04:00
Jeremy Stretch
302f87e108 Fixes #3937: Suppress warning messages in tests for requests expected to yield a 4XX response 2020-01-17 14:53:33 -05:00
Jeremy Stretch
8bd67b2c17 Add tests for browsable API endpoints 2020-01-15 17:47:55 -05:00
Jeremy Stretch
c202c1325b Add test for VM interface type choices 2020-01-15 10:04:12 -05:00
Jeremy Stretch
857e04e90b Add _choices endpoint tests for all apps 2020-01-14 16:13:11 -05:00
Jeremy Stretch
3fa4ceadb0 Interface.mode to slug (#3569) 2019-11-21 22:50:01 -05:00
Jeremy Stretch
5f5081f719 Interface.type to slug (#3569) 2019-11-21 22:11:02 -05:00
Jeremy Stretch
205adeb2e9 Remove NullableCharFieldFilter; add missing filter fields 2019-05-07 13:59:21 -04:00
Jeremy Stretch
a46b43bff6 Added child counts to API serializers (WIP) 2019-04-12 17:07:56 -04:00
Jeremy Stretch
1a2c9e3bba Rename form_factor to type on dcim.Interface 2019-04-12 13:42:56 -04:00
Jeremy Stretch
4f9b666eee Merge branch 'develop' into develop-2.6 2019-04-09 14:11:26 -04:00
dansheps
7f6d79362e Fix virtualization test and add to changelog 2019-04-05 09:47:38 -05:00