FreeNAS/freenas 8fd2eb2src/middlewared/middlewared/api/v25_10_0 vm.py vm_device.py, src/middlewared/middlewared/plugins/vm vm_devices.py

add vm.device.convert
DeltaFile
+174-10src/middlewared/middlewared/plugins/vm/vm_devices.py
+3-31src/middlewared/middlewared/api/v25_10_0/vm.py
+14-0src/middlewared/middlewared/api/v25_10_0/vm_device.py
+191-413 files

FreeNAS/freenas bdcda99src/middlewared/middlewared/api/v25_10_0 vm.py, src/middlewared/middlewared/plugins/vm vm_devices.py

add vm.device.convert method
DeltaFile
+175-10src/middlewared/middlewared/plugins/vm/vm_devices.py
+11-26src/middlewared/middlewared/api/v25_10_0/vm.py
+186-362 files

FreeNAS/freenas 7aca45dtests/api2 test_475_syslog.py

add test
DeltaFile
+71-59tests/api2/test_475_syslog.py
+71-591 files

FreeNAS/freenas a32a7a4src/middlewared/middlewared/etc_files/syslog-ng syslog-ng.conf.mako, src/middlewared/middlewared/plugins/system_advanced config.py

distinguish remote destinations
DeltaFile
+8-8src/middlewared/middlewared/etc_files/syslog-ng/syslog-ng.conf.mako
+0-4src/middlewared/middlewared/plugins/system_advanced/config.py
+8-122 files

FreeNAS/freenas 3228047src/middlewared/middlewared/plugins/system_advanced config.py

no longer need to convert cert field
DeltaFile
+0-4src/middlewared/middlewared/plugins/system_advanced/config.py
+0-41 files

FreeNAS/freenas d85e1f8src/middlewared/middlewared/etc_files/syslog-ng syslog-ng.conf.mako

distinguish remote destinations
DeltaFile
+8-8src/middlewared/middlewared/etc_files/syslog-ng/syslog-ng.conf.mako
+8-81 files

FreeNAS/freenas dcd0616src/middlewared/middlewared/alembic/versions/25.10 2025-08-29_15-41_second_syslog_server.py

fix migration
DeltaFile
+4-4src/middlewared/middlewared/alembic/versions/25.10/2025-08-29_15-41_second_syslog_server.py
+4-41 files

FreeNAS/freenas 3b02548src/middlewared/middlewared/alembic/versions/25.10 2025-08-29_15-41_second_syslog_server.py

fix
DeltaFile
+1-1src/middlewared/middlewared/alembic/versions/25.10/2025-08-29_15-41_second_syslog_server.py
+1-11 files

FreeNAS/freenas ef1f23fsrc/middlewared/middlewared/alembic/versions/25.10 2025-08-29_15-41_second_syslog_server.py

fix migration
DeltaFile
+3-3src/middlewared/middlewared/alembic/versions/25.10/2025-08-29_15-41_second_syslog_server.py
+3-31 files

FreeNAS/freenas 8fb8768src/middlewared/middlewared/plugins/system cert_attachments.py

monkeypatch 🐵
DeltaFile
+5-1src/middlewared/middlewared/plugins/system/cert_attachments.py
+5-11 files

FreeNAS/freenas f96a900src/middlewared/middlewared/alembic/versions/25.10 2025-08-29_15-41_second_syslog_server.py

migration
DeltaFile
+37-0src/middlewared/middlewared/alembic/versions/25.10/2025-08-29_15-41_second_syslog_server.py
+37-01 files

FreeNAS/freenas 5c28d03src/middlewared/middlewared/api/v25_10_0 system_advanced.py, src/middlewared/middlewared/etc_files/syslog-ng syslog-ng.conf.mako

support for second syslog server
DeltaFile
+45-41src/middlewared/middlewared/plugins/system_advanced/config.py
+19-10src/middlewared/middlewared/api/v25_10_0/system_advanced.py
+12-17tests/api2/test_475_syslog.py
+11-11src/middlewared/middlewared/etc_files/syslog-ng/syslog-ng.conf.mako
+1-1src/middlewared/middlewared/plugins/audit/audit.py
+1-1src/middlewared/middlewared/plugins/system_advanced/syslog.py
+89-816 files

FreeNAS/freenas dbe76dbsrc/middlewared/middlewared/api/v25_10_0 system_advanced.py, src/middlewared/middlewared/etc_files/syslog-ng syslog-ng.conf.mako

support for second syslog server
DeltaFile
+45-39src/middlewared/middlewared/plugins/system_advanced/config.py
+12-17tests/api2/test_475_syslog.py
+19-10src/middlewared/middlewared/api/v25_10_0/system_advanced.py
+11-11src/middlewared/middlewared/etc_files/syslog-ng/syslog-ng.conf.mako
+1-1src/middlewared/middlewared/plugins/audit/audit.py
+1-1src/middlewared/middlewared/plugins/system_advanced/syslog.py
+89-796 files

FreeNAS/freenas abbf796src/middlewared/middlewared/plugins/apps schema_construction_utils.py, src/middlewared/middlewared/pytest/unit/plugins/apps test_list_with_show_if_conditions.py test_schema_immutable_fields.py

NAS-137265 / 25.10-RC.1 / Fix show_if usage for item schemas within a list (by sonicaj) (#17102)

This PR adds changes to fix `show_if` usage for item schemas within a
list and also assuming that we will only have 1 item in the list schema
(which is true for existing apps and will be enforced by
apps_validation).

Original PR: https://github.com/truenas/middleware/pull/17058

---------

Co-authored-by: Waqar Ahmed <waqarahmedjoyia at live.com>
DeltaFile
+1,320-0src/middlewared/middlewared/pytest/unit/plugins/apps/test_list_with_show_if_conditions.py
+0-831src/middlewared/middlewared/pytest/unit/plugins/apps/test_schema_immutable_fields.py
+736-0src/middlewared/middlewared/pytest/unit/plugins/apps/test_comprehensive_list_schemas.py
+167-62src/middlewared/middlewared/plugins/apps/schema_construction_utils.py
+0-66src/middlewared/middlewared/pytest/unit/plugins/apps/test_schema_construction_utils.py
+2,223-9595 files

FreeNAS/freenas 80dded6src/middlewared/middlewared/plugins/apps schema_construction_utils.py, src/middlewared/middlewared/pytest/unit/plugins/apps test_list_with_show_if_conditions.py test_schema_immutable_fields.py

NAS-137265 / 26.04 / Fix show_if usage for item schemas within a list (#17058)

This PR adds changes to fix `show_if` usage for item schemas within a
list and also assuming that we will only have 1 item in the list schema
(which is true for existing apps and will be enforced by
apps_validation).
DeltaFile
+1,320-0src/middlewared/middlewared/pytest/unit/plugins/apps/test_list_with_show_if_conditions.py
+0-831src/middlewared/middlewared/pytest/unit/plugins/apps/test_schema_immutable_fields.py
+736-0src/middlewared/middlewared/pytest/unit/plugins/apps/test_comprehensive_list_schemas.py
+167-62src/middlewared/middlewared/plugins/apps/schema_construction_utils.py
+0-66src/middlewared/middlewared/pytest/unit/plugins/apps/test_schema_construction_utils.py
+2,223-9595 files

FreeNAS/freenas 5cabb6csrc/middlewared/middlewared role.py, src/middlewared/middlewared/api/v26_04_0 zfs_resource_crud.py

add zfs.resource.destroy
DeltaFile
+214-31src/middlewared/middlewared/plugins/zfs/resource_crud.py
+121-0src/middlewared/middlewared/plugins/zfs/destroy_impl.py
+41-1src/middlewared/middlewared/api/v26_04_0/zfs_resource_crud.py
+1-0src/middlewared/middlewared/role.py
+377-324 files

FreeNAS/freenas f57c0e0tests/api2 test_zfs_resource_destroy.py

add tests
DeltaFile
+203-0tests/api2/test_zfs_resource_destroy.py
+203-01 files

FreeNAS/freenas f33b74fsrc/middlewared/middlewared/plugins/zfs resource_crud.py

audit it
DeltaFile
+4-1src/middlewared/middlewared/plugins/zfs/resource_crud.py
+4-11 files

FreeNAS/freenas a761519src/freenas/etc nfs.conf

NAS-137353 / 26.04 / Add nfs.conf stub file to satisfy systemd generated rpc daemon start. (#17101)

### DO NOT BACKPORT
The new `nfs-utils` moved systemd management of the NFS rpc daemon to a
'generated' method. Generated systemd unit files are managed by a
compiled binary. These are run _very_ early in boot. The NFS rpc module
depends on a setting in `/etc/nfs.conf`. This file is managed and
created by middleware with mako scripts. It doesn't get created until
NFS has been started. Under this condition, systemd generates the rpc
files, but finds no rpc setting which results in no rpc daemon.
This fixes the NFS `test_service_update` failures in `test_300_nfs.py`

**The Fix:**
There are two PRs associated with this fix. One for `middleware` (this
PR) and one for `scale-build`
This PR adds a stub file, `/etc/nfs.conf` with a single hardcoded
setting to enable systemd to generate the proper rpc files.
The `scale-build` PR excludes the file from truenas_verify (mtree).

Passing CI tests
[here](http://jenkins.eng.ixsystems.net:8080/job/tests/job/api_tests/5736/).
DeltaFile
+7-0src/freenas/etc/nfs.conf
+7-01 files

FreeNAS/freenas 12db46esrc/middlewared/middlewared/api/v26_04_0 iscsi_global.py

Add direct_config to API
DeltaFile
+1-0src/middlewared/middlewared/api/v26_04_0/iscsi_global.py
+1-01 files

FreeNAS/freenas 854f368tests runtest.py

Allow iSCSI tests to be run in isolation
DeltaFile
+1-0tests/runtest.py
+1-01 files

FreeNAS/freenas e8f0734src/middlewared/middlewared/plugins/iscsi_ iscsi_global.py

Add direct_config to iSCSI global config
DeltaFile
+14-0src/middlewared/middlewared/plugins/iscsi_/iscsi_global.py
+14-01 files

FreeNAS/freenas d8fdea3src/middlewared/middlewared/etc_files scst.conf.mako, src/middlewared/middlewared/plugins etc.py

Move some iSCSI API calls into render context
DeltaFile
+5-5src/middlewared/middlewared/etc_files/scst.conf.mako
+4-0src/middlewared/middlewared/plugins/etc.py
+9-52 files

FreeNAS/freenas 6d06999src/freenas/etc nfs.conf

Add nfs.conf stub file to satisfy systemd generated rpc daemon start.
DeltaFile
+7-0src/freenas/etc/nfs.conf
+7-01 files

FreeNAS/freenas de2e8c8tests/unit test_auditd_rules.py

Make test more verbose
DeltaFile
+4-4tests/unit/test_auditd_rules.py
+4-41 files

FreeNAS/freenas 431b560src/freenas/etc nfs.conf

Add nfs.conf stub file to satisfy systemd generated rpc daemon start.
DeltaFile
+7-0src/freenas/etc/nfs.conf
+7-01 files

FreeNAS/freenas ffac418src/middlewared/middlewared/api/v26_04_0 cloud_credential.py cloud_sync_providers.py, src/middlewared/middlewared/plugins cloud_sync.py

S3 `provider` and `force_path_style` options
DeltaFile
+17-0src/middlewared/middlewared/scripts/generate_s3_providers.py
+10-1src/middlewared/middlewared/api/v26_04_0/cloud_credential.py
+6-0src/middlewared/middlewared/plugins/cloud_sync.py
+4-0src/middlewared/middlewared/api/v26_04_0/cloud_sync_providers.py
+3-0src/middlewared/middlewared/rclone/remote/s3_providers.py
+1-1src/middlewared/middlewared/rclone/remote/s3.py
+41-22 files not shown
+43-28 files

FreeNAS/freenas e1352c8src/middlewared/middlewared/plugins sysdataset.py

NAS-137266 / 25.10-RC.1 / Make sure create paths properly get executed (by Qubad786) (#17100)

DeltaFile
+15-14src/middlewared/middlewared/plugins/sysdataset.py
+15-141 files

FreeNAS/freenas 436487fsrc/middlewared/middlewared/plugins sysdataset.py

Make sure create paths properly get executed

(cherry picked from commit 498771c92adc775be79274851af887fd05465d35)
DeltaFile
+15-14src/middlewared/middlewared/plugins/sysdataset.py
+15-141 files

FreeNAS/freenas 21ce535src/middlewared/middlewared/plugins sysdataset.py

NAS-137266 / 26.04 / Make sure create paths properly get executed (#17057)

## Problem

`create_paths` in system dataset spec definition is applied EACH time
system dataset setup is executed. The problem happens when a new
sub-dataset is defined in system dataset setup and it has `create_paths`
defined, by default these datasets have legacy mountpoint set. Which
means if the create paths refer to a path on the just created dataset,
that would get created on the _parent_ dataset instead of the actual
dataset because the dataset which was created just right now had not
been mounted.

## Solution

Make sure that we execute create relevant paths endpoint when the
dataset in question has already mounted.
One of the key changes here apart from having it execute once the
dataset is already mounted is that this will not be executed if the

    [5 lines not shown]
DeltaFile
+15-14src/middlewared/middlewared/plugins/sysdataset.py
+15-141 files