FreeNAS/freenas ba969b6src/middlewared/middlewared/api/v25_10_0 virt_volume.py, src/middlewared/middlewared/plugins/virt volume.py

Allow import of zvols into incus volumes

This commit adds an API endpoint to allow converting existing zvols
into custom incus volumes. The new API endpoint takes the following
parameters:

to_import - list of zvols to import as custom storage volumes in
incus.

clone - boolean (default False) clone and promote a temporary
snapshot of the zvol into a custom storage volume. This is an
option for users who are more paranoid about migration.

This endpoint takes multiple zvols because the recovery operation
is somewhat slow and expensive. It's better to do everything in
one large batch.
DeltaFile
+139-2src/middlewared/middlewared/plugins/virt/volume.py
+28-0src/middlewared/middlewared/api/v25_10_0/virt_volume.py
+167-22 files

FreeNAS/freenas a167c13src/middlewared/middlewared/alembic/versions/25.10 2025-03-14_19-25_remove_system_general_language.py, src/middlewared/middlewared/plugins/system_general language.py update.py

NAS-134787 / 25.10 / Remove `language` column from system.general (#16010)

Middleware cannot change the locale settings for the OS. It will be up
to the UI to maintain a list of available languages.

http://jenkins.eng.ixsystems.net:8080/job/tests/job/api_tests/3552/

---------

Co-authored-by: root <root at test798IX8BWAK.local>
DeltaFile
+0-110src/middlewared/middlewared/plugins/system_general/language.py
+32-0src/middlewared/middlewared/alembic/versions/25.10/2025-03-14_19-25_remove_system_general_language.py
+0-11src/middlewared/middlewared/plugins/system_general/update.py
+32-1213 files

FreeNAS/freenas 8970282src/middlewared/middlewared/alembic/versions/25.10 2025-03-14_19-25_remove_system_general_language.py

migrate
DeltaFile
+32-0src/middlewared/middlewared/alembic/versions/25.10/2025-03-14_19-25_remove_system_general_language.py
+32-01 files

FreeNAS/freenas 59f440bsrc/middlewared/middlewared/api/v25_10_0 virt_volume.py, src/middlewared/middlewared/plugins/virt volume.py

Allow import of zvols into incus volumes
DeltaFile
+138-3src/middlewared/middlewared/plugins/virt/volume.py
+28-0src/middlewared/middlewared/api/v25_10_0/virt_volume.py
+166-32 files

FreeNAS/freenas 7a72d8dsrc/middlewared/middlewared/plugins/disk_ resize.py

NAS-134804 / 25.10 / move disk.resize to private endpoint (#16007)

DeltaFile
+11-18src/middlewared/middlewared/plugins/disk_/resize.py
+11-181 files

FreeNAS/freenas 141224bsrc/middlewared/middlewared/api/v25_10_0 cloud_sync.py, src/middlewared/middlewared/plugins/cloud_sync_ crud.py

add cloud_sync_/crud.py to new API
DeltaFile
+25-2src/middlewared/middlewared/api/v25_10_0/cloud_sync.py
+9-11src/middlewared/middlewared/plugins/cloud_sync_/crud.py
+34-132 files

FreeNAS/freenas 114e935src/middlewared/middlewared/plugins/disk_ resize.py

address review
DeltaFile
+4-4src/middlewared/middlewared/plugins/disk_/resize.py
+4-41 files

FreeNAS/freenas 2719d5asrc/middlewared/middlewared/plugins/disk_ identify.py

NAS-134805 / 25.10 / remove accepts from device_to_identifier (#16008)

This is private so no reason to expose to public, therefore preventing
us from needing to convert it.
DeltaFile
+1-4src/middlewared/middlewared/plugins/disk_/identify.py
+1-41 files

FreeNAS/freenas 1782762src/middlewared/middlewared/plugins/disk_ info.py

NAS-134806 / 25.10 / remove accepts from disk.info (#16009)

This is private so no reason to expose to public, therefore preventing
us from needing to convert it.
DeltaFile
+1-3src/middlewared/middlewared/plugins/disk_/info.py
+1-31 files

FreeNAS/freenas 9d7389bsrc/middlewared/middlewared/plugins/pool_ pool.py import_pool.py

NAS-134689 / 25.04.0 / Do not allow users to create pool with whitespaces in name (by Qubad786) (#15987)

Automatic cherry-pick failed. Please resolve conflicts by running:

    git reset --hard HEAD~1
    git cherry-pick -x 555ea46582899fff53135fec9188f2b999a6b350

If the original PR was merged via a squash, you can just cherry-pick the
squashed commit:

    git reset --hard HEAD~1
    git cherry-pick -x a510b66662b38ac00395f81d3d5e4187a203d11b

## Context

We had added validation earlier to not allow users to set a pool for
incus which has whitespaces in it's name because incus is not able to
handle pool names which have whitespaces in it. Now we are adding
changes to not allow user to create/import a pool with a name which

    [5 lines not shown]
DeltaFile
+2-2src/middlewared/middlewared/plugins/pool_/pool.py
+2-1src/middlewared/middlewared/plugins/pool_/import_pool.py
+4-32 files

FreeNAS/freenas 6350fccsrc/middlewared/middlewared/api/v25_04_0 virt_device.py, src/middlewared/middlewared/plugins/virt instance_device.py

Add endpoint to allow booting from specific disk in virt VM
DeltaFile
+51-4src/middlewared/middlewared/plugins/virt/instance_device.py
+10-0src/middlewared/middlewared/api/v25_04_0/virt_device.py
+61-42 files

FreeNAS/freenas 7258b60src/middlewared/middlewared/api/v25_10_0 virt_device.py

Get pydantic changes to 25.10
DeltaFile
+10-0src/middlewared/middlewared/api/v25_10_0/virt_device.py
+10-01 files

FreeNAS/freenas d1eb03ctests/api2 test_virt_002_instance.py

Fix virt integration tests
DeltaFile
+6-6tests/api2/test_virt_002_instance.py
+6-61 files

FreeNAS/freenas c7ffdbbsrc/middlewared/middlewared/plugins/pool_ pool.py import_pool.py

Do not allow users to create pool with whitespaces in name
DeltaFile
+2-2src/middlewared/middlewared/plugins/pool_/pool.py
+2-1src/middlewared/middlewared/plugins/pool_/import_pool.py
+4-32 files

FreeNAS/freenas 2028dbdsrc/middlewared/middlewared/plugins/disk_ sync.py

NAS-134801 / 25.10 / remove accepts from disk_/sync.py (#16005)

These are private and simple endpoints, no reason to convert them.
DeltaFile
+7-11src/middlewared/middlewared/plugins/disk_/sync.py
+7-111 files

FreeNAS/freenas 6cfc993src/middlewared/middlewared/plugins/disk_ resize.py

move disk.resize to private endpoint
DeltaFile
+7-14src/middlewared/middlewared/plugins/disk_/resize.py
+7-141 files

FreeNAS/freenas 3ba7d2dsrc/middlewared/middlewared/plugins/disk_ retaste.py

NAS-134803 / 25.10 / move disk_/retaste.py to private endpoint (#16006)

Convert disk.retaste to private endpoint. Never meant to be public.
DeltaFile
+3-5src/middlewared/middlewared/plugins/disk_/retaste.py
+3-51 files

FreeNAS/freenas bf764acsrc/middlewared/middlewared/plugins/disk_ sync.py

remove accepts from disk_/sync.py
DeltaFile
+7-11src/middlewared/middlewared/plugins/disk_/sync.py
+7-111 files

FreeNAS/freenas 00e7ac5src/middlewared/middlewared/api/v25_10_0 cloud_sync_crud.py __init__.py, src/middlewared/middlewared/plugins/cloud_sync_ crud.py

conver cloud_sync_/crud.py to new API
DeltaFile
+9-11src/middlewared/middlewared/plugins/cloud_sync_/crud.py
+16-0src/middlewared/middlewared/api/v25_10_0/cloud_sync_crud.py
+1-0src/middlewared/middlewared/api/v25_10_0/__init__.py
+26-113 files

FreeNAS/freenas f1b03c5tests/unit test_auditd_rules.py

NAS-134795 / 25.04.0 / Fix stig unit test. (by mgrimesix) (#16002)

The STIG unit test is failing because the recently added test used an
incorrect string. The test used the _source_ rule, but the `augenrules`
utility reformats the rule.

Updated the test to use the rule as formatted by `augenrules`.

The auditd rule is included in 25.04.0 and this test fix should be
backported accordingly.

Original PR: https://github.com/truenas/middleware/pull/16000
Jira URL: https://ixsystems.atlassian.net/browse/NAS-134795

Co-authored-by: Mark Grimes <mark.grimes at ixsystems.com>
DeltaFile
+5-5tests/unit/test_auditd_rules.py
+5-51 files

FreeNAS/freenas b000535src/middlewared/middlewared/api/v25_10_0 system_general_ui.py __init__.py, src/middlewared/middlewared/plugins/system_general ui.py

NAS-134792 / 25.10 / convert system_general/ui.py to new API (#15997)

DeltaFile
+126-80src/middlewared/middlewared/plugins/system_general/ui.py
+52-0src/middlewared/middlewared/api/v25_10_0/system_general_ui.py
+1-0src/middlewared/middlewared/api/v25_10_0/__init__.py
+179-803 files

FreeNAS/freenas c430dedsrc/middlewared/middlewared/plugins/filesystem_ perm_check.py

NAS-134793 / 25.10 / move filesystem_/perm_check.py to private endpoint (#15998)

DeltaFile
+8-13src/middlewared/middlewared/plugins/filesystem_/perm_check.py
+8-131 files

FreeNAS/freenas fa37f08tests/unit test_auditd_rules.py

Fix stig unit test.  Update the compare.

(cherry picked from commit bb0a93263e07544a8a10e0671b4d8717e8da4596)
DeltaFile
+5-5tests/unit/test_auditd_rules.py
+5-51 files

FreeNAS/freenas c3051e4tests/unit test_auditd_rules.py

NAS-134795 / 25.10 / Fix stig unit test. (#16000)

The STIG unit test is failing because the recently added test used an
incorrect string. The test used the _source_ rule, but the `augenrules`
utility reformats the rule.

Updated the test to use the rule as formatted by `augenrules`.

The auditd rule is included in 25.04.0 and this test fix should be
backported accordingly.
DeltaFile
+5-5tests/unit/test_auditd_rules.py
+5-51 files

FreeNAS/freenas 8e5b044src/middlewared/middlewared/api/v25_04_0 virt_instance.py virt_volume.py

NAS-134764 / 25.04.0 / Fix discrepancy between 2510 and 2504 virt pydantic models (by Qubad786) (#16001)

## Context

A small diff between 2504 and 2510 had leaked in backporting changes and
is being fixed.

Original PR: https://github.com/truenas/middleware/pull/15989
Jira URL: https://ixsystems.atlassian.net/browse/NAS-134764

Co-authored-by: M. Rehan <mrehanlm93 at gmail.com>
DeltaFile
+1-1src/middlewared/middlewared/api/v25_04_0/virt_instance.py
+1-1src/middlewared/middlewared/api/v25_04_0/virt_volume.py
+2-22 files

FreeNAS/freenas 8f68cdfsrc/middlewared/middlewared/api/v25_10_0 system_general_ui.py

alphabetize the classes
DeltaFile
+24-24src/middlewared/middlewared/api/v25_10_0/system_general_ui.py
+24-241 files

FreeNAS/freenas 22cfc03src/middlewared/middlewared/api/v25_04_0 virt_instance.py virt_volume.py

NAS-134764 / 25.10 / Fix discrepancy between 2510 and 2504 virt pydantic models (#15989)

## Context

A small diff between 2504 and 2510 had leaked in backporting changes and
is being fixed.
DeltaFile
+1-1src/middlewared/middlewared/api/v25_04_0/virt_instance.py
+1-1src/middlewared/middlewared/api/v25_04_0/virt_volume.py
+2-22 files

FreeNAS/freenas 6645b62src/middlewared/middlewared/plugins/system_general ui.py

grammar are hard
DeltaFile
+4-4src/middlewared/middlewared/plugins/system_general/ui.py
+4-41 files

FreeNAS/freenas 10604e6src/middlewared/middlewared/plugins/filesystem_ perm_check.py

move filesystem.can_access_as_user to a private endpoint
DeltaFile
+8-13src/middlewared/middlewared/plugins/filesystem_/perm_check.py
+8-131 files

FreeNAS/freenas 312ee15src/middlewared/middlewared/api/v25_10_0 system_general_timezone.py __init__.py, src/middlewared/middlewared/plugins/system_general timezone.py

NAS-134784 / 25.10 / convert system.general.timezone_choices to new API (#15996)

DeltaFile
+9-3src/middlewared/middlewared/plugins/system_general/timezone.py
+9-0src/middlewared/middlewared/api/v25_10_0/system_general_timezone.py
+1-0src/middlewared/middlewared/api/v25_10_0/__init__.py
+19-33 files