FreeNAS/freenas 0eb356ftests/stig test_03_stig_auditing.py

Add 'missing watched directory' CI test.
Small amount of refactoring.
DeltaFile
+58-20tests/stig/test_03_stig_auditing.py
+58-201 files

FreeNAS/freenas a7986b6src/middlewared/middlewared/test/integration/utils shell.py, tests/api2 test_usage_reporting.py

add webshell testing
DeltaFile
+43-121tests/api2/test_usage_reporting.py
+59-18src/middlewared/middlewared/test/integration/utils/shell.py
+102-1392 files

FreeNAS/freenas 210e8d8src/middlewared/middlewared main.py, src/middlewared/middlewared/apps file_app.py

NAS-139830 / 26.0.0-BETA.1 / Refactor auth.login_ex (#18223)

This commit shifts the auth.login_ex method so that it calls into
various helper methods in auth_/login_ex_imply.py. The helper methods
allow easier separation of sync vs async methods and consistent typing
for responses and arguments.

Various typing fixes are also applied.

A new auth.login_ex response `DENIED` is generated if user successfully
authenticates but has no API access.
DeltaFile
+510-0src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+57-350src/middlewared/middlewared/plugins/auth.py
+4-62src/middlewared/middlewared/plugins/auth_/authenticate.py
+22-16src/middlewared/middlewared/apps/file_app.py
+15-8src/middlewared/middlewared/plugins/api_key.py
+17-3src/middlewared/middlewared/main.py
+625-4395 files not shown
+637-44511 files

FreeNAS/freenas b97699ftests/api2 test_usage_reporting.py

fix method names
DeltaFile
+7-7tests/api2/test_usage_reporting.py
+7-71 files

FreeNAS/freenas 3fc7103src/middlewared/middlewared/plugins init_shutdown_script.py, src/middlewared/middlewared/plugins/init_shutdown_script __init__.py crud.py

Move initshutdown task namespace to be typesafe
DeltaFile
+0-179src/middlewared/middlewared/plugins/init_shutdown_script.py
+140-0src/middlewared/middlewared/service/crud_service_part.py
+82-0src/middlewared/middlewared/plugins/init_shutdown_script/__init__.py
+72-0src/middlewared/middlewared/plugins/init_shutdown_script/crud.py
+57-0src/middlewared/middlewared/plugins/init_shutdown_script/task.py
+56-1src/middlewared/middlewared/utils/filter_list.py
+407-1806 files not shown
+416-18212 files

FreeNAS/freenas 612af7esrc/freenas/usr/local/bin truenas-initrd.py

NAS-139837 / 26.0.0-BETA.1 / Change import behavior for atomic_write (#18226)

This commit adjusts when we try to import atomic_write so that it occurs
once we've rewritten the python path.

```
root at truenas[~]# cat /var/log/truenas-installer-initrd-error.log

======================================================================
Timestamp: 2026-02-16T21:25:46.469672
truenas-initrd.py completed with exit code 1
Error output:
Traceback (most recent call last):
  File "/tmp/tmpwl6etqoq/usr/local/bin/truenas-initrd.py", line 14, in <module>
    from middlewared.utils.io import atomic_write
ImportError: cannot import name 'atomic_write' from 'middlewared.utils.io' (/usr/lib/python3/dist-packages/middlewared/utils/io.py)

======================================================================
```
DeltaFile
+11-2src/freenas/usr/local/bin/truenas-initrd.py
+11-21 files

FreeNAS/freenas 7921101src/middlewared pyproject.toml, src/middlewared/debian control

remove pyroute2
DeltaFile
+0-5src/middlewared/middlewared/logger.py
+1-1src/middlewared/pyproject.toml
+0-2src/middlewared/debian/control
+1-83 files

FreeNAS/freenas 556e542src/middlewared/middlewared/plugins/rdma/interface crud.py

remove NDB from rdma interface configuration
DeltaFile
+70-55src/middlewared/middlewared/plugins/rdma/interface/crud.py
+70-551 files

FreeNAS/freenas 6f0bf86tests/api2 test_usage_reporting.py

test
DeltaFile
+7-4tests/api2/test_usage_reporting.py
+7-41 files

FreeNAS/freenas 7485987src/middlewared/middlewared/plugins init_shutdown_script.py, src/middlewared/middlewared/plugins/init_shutdown_script __init__.py crud.py

Move initshutdown task namespace to be typesafe
DeltaFile
+0-179src/middlewared/middlewared/plugins/init_shutdown_script.py
+140-0src/middlewared/middlewared/service/crud_service_part.py
+82-0src/middlewared/middlewared/plugins/init_shutdown_script/__init__.py
+72-0src/middlewared/middlewared/plugins/init_shutdown_script/crud.py
+56-1src/middlewared/middlewared/utils/filter_list.py
+57-0src/middlewared/middlewared/plugins/init_shutdown_script/task.py
+407-1805 files not shown
+415-18211 files

FreeNAS/freenas c7e0710src/middlewared/middlewared/apps file_app.py, src/middlewared/middlewared/plugins api_key.py

Fix import issue
DeltaFile
+1-4src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+0-2src/middlewared/middlewared/plugins/api_key.py
+0-1src/middlewared/middlewared/apps/file_app.py
+1-73 files

FreeNAS/freenas f33f684src/middlewared/middlewared/apps file_app.py, src/middlewared/middlewared/plugins api_key.py

Fix import issue
DeltaFile
+1-4src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+0-2src/middlewared/middlewared/plugins/api_key.py
+0-1src/middlewared/middlewared/apps/file_app.py
+1-73 files

FreeNAS/freenas 398c00bsrc/middlewared/middlewared/apps file_app.py, src/middlewared/middlewared/plugins api_key.py account.py

Fix
DeltaFile
+22-15src/middlewared/middlewared/apps/file_app.py
+16-7src/middlewared/middlewared/plugins/api_key.py
+3-4src/middlewared/middlewared/plugins/auth_/authenticate.py
+2-3src/middlewared/middlewared/plugins/account.py
+43-294 files

FreeNAS/freenas 9c9ceecsrc/freenas/usr/local/bin truenas-initrd.py

Improve comment
DeltaFile
+1-1src/freenas/usr/local/bin/truenas-initrd.py
+1-11 files

FreeNAS/freenas 7360feesrc/freenas/usr/local/bin truenas-initrd.py

Change import behavior for atomic_write

This commit adjusts when we try to import atomic_write so that
it occurs once we've rewritten the python path.
DeltaFile
+11-2src/freenas/usr/local/bin/truenas-initrd.py
+11-21 files

FreeNAS/freenas 6ae261dtests/api2 test_usage_reporting.py, tests/unit test_method_stats_external_call.py

draft
DeltaFile
+232-0tests/unit/test_method_stats_external_call.py
+191-2tests/api2/test_usage_reporting.py
+423-22 files

FreeNAS/freenas 533a87csrc/middlewared/middlewared/apps file_app.py, src/middlewared/middlewared/plugins api_key.py account.py

Fix
DeltaFile
+22-15src/middlewared/middlewared/apps/file_app.py
+16-7src/middlewared/middlewared/plugins/api_key.py
+3-4src/middlewared/middlewared/plugins/auth_/authenticate.py
+2-3src/middlewared/middlewared/plugins/account.py
+43-294 files

FreeNAS/freenas dc3d760src/middlewared/middlewared service_exception.py, src/middlewared/middlewared/plugins/init_shutdown_script __init__.py crud.py

Move initshutdown task namespace to be typesafe
DeltaFile
+140-0src/middlewared/middlewared/service/crud_service_part.py
+72-0src/middlewared/middlewared/plugins/init_shutdown_script/__init__.py
+72-0src/middlewared/middlewared/plugins/init_shutdown_script/crud.py
+56-1src/middlewared/middlewared/utils/filter_list.py
+2-0src/middlewared/middlewared/service/__init__.py
+1-1src/middlewared/middlewared/service_exception.py
+343-21 files not shown
+344-37 files

FreeNAS/freenas 75a8f72src/middlewared/middlewared/etc_files systemd.py, src/middlewared/middlewared/plugins/service_/services base.py

NAS-139836 / 26.0.0-BETA.1 / remove fork+exec in etc_files/systemd.py (#18225)

I just recently pushed a fix here and noticed that we're forking and
exec'ing in the main event loop at least once but sometimes twice or
more depending on the services state. That's not good, let's use async
native coroutines to remove all fork+exec logic as well as the hack that
we added to ignore the sysv order.

Add two new coroutines in services_/base.py that allow querying a
systemd unit's state as well as allows a unit to be enabled/disabled.
DeltaFile
+61-10src/middlewared/middlewared/plugins/service_/services/base.py
+11-29src/middlewared/middlewared/etc_files/systemd.py
+72-392 files

FreeNAS/freenas 7c37d62src/middlewared/middlewared/etc_files systemd.py, src/middlewared/middlewared/plugins/service_/services base.py

better coroutine name
DeltaFile
+2-2src/middlewared/middlewared/etc_files/systemd.py
+1-1src/middlewared/middlewared/plugins/service_/services/base.py
+3-32 files

FreeNAS/freenas f07df94tests/api2 test_300_nfs.py test_200_ftp.py

Remove tests
DeltaFile
+0-2,224tests/api2/test_300_nfs.py
+0-1,411tests/api2/test_200_ftp.py
+0-936tests/api2/test_345_acl_nfs4.py
+0-700tests/api2/test_011_user.py
+0-495tests/api2/test_440_snmp.py
+0-479tests/api2/test_310_service_announcement.py
+0-6,245245 files not shown
+0-30,915251 files

FreeNAS/freenas 4f23576src/middlewared/middlewared/etc_files systemd.py

remove fork+exec in etc_files/systemd.py
DeltaFile
+11-29src/middlewared/middlewared/etc_files/systemd.py
+11-291 files

FreeNAS/freenas 54b4fd0src/middlewared/middlewared/plugins/service_/services base.py

add 2 new functions to services/base.py
DeltaFile
+61-10src/middlewared/middlewared/plugins/service_/services/base.py
+61-101 files

FreeNAS/freenas bb6af4esrc/middlewared/middlewared/etc_files systemd.py

NAS-139835 / 26.0.0-BETA.1 / fix KeyError crash in etc/systemd.py (#18224)

`is-enabled` verb to the `systemctl` can return all kinds of responses
and not just `enabled` or `disabled`. Prevent a KeyError crash from
occurring and instead log it as a warning.
DeltaFile
+6-1src/middlewared/middlewared/etc_files/systemd.py
+6-11 files

FreeNAS/freenas 04c7a00src/middlewared/middlewared/plugins/auth_ login_ex_impl.py

Fix SCRAM auth failures
DeltaFile
+21-10src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+21-101 files

FreeNAS/freenas 6a2c12dtests/api2 test_audit_websocket.py

Adjust test string for unknown user
DeltaFile
+1-1tests/api2/test_audit_websocket.py
+1-11 files

FreeNAS/freenas 9e1b8adsrc/middlewared/middlewared/plugins/auth_ login_ex_impl.py

Fix test regressions
DeltaFile
+6-1src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+6-11 files

FreeNAS/freenas d108e81debian/debian control

Add rwd as a debian dependency of truenas
DeltaFile
+1-0debian/debian/control
+1-01 files

FreeNAS/freenas 85b0d54src/middlewared/middlewared/plugins/auth_ login_ex_impl.py

Fix error handling
DeltaFile
+14-1src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+14-11 files

FreeNAS/freenas f490028src/middlewared/middlewared main.py, src/middlewared/middlewared/api/base/server app.py

Refactor auth.login_ex

This commit shifts the auth.login_ex method so that it calls into
various helper methods in auth_/login_ex_imply.py. The helper
methods allow easier separation of sync vs async methods and
consistent typing for responses and arguments.

Various typing fixes are also applied.

A new auth.login_ex response `DENIED` is generated if user
successfully authenticates but has no API access.
DeltaFile
+484-0src/middlewared/middlewared/plugins/auth_/login_ex_impl.py
+57-350src/middlewared/middlewared/plugins/auth.py
+1-58src/middlewared/middlewared/plugins/auth_/authenticate.py
+17-3src/middlewared/middlewared/main.py
+7-1src/middlewared/middlewared/api/v26_0_0/auth.py
+1-1src/middlewared/middlewared/api/base/server/app.py
+567-4131 files not shown
+568-4137 files