Bug 47289 - Ошибка при вызове функции sysctl.assign
Summary: Ошибка при вызове функции sysctl.assign
Status: CLOSED WORKSFORME
Alias: None
Product: Sisyphus
Classification: Development
Component: salt (show other bugs)
Version: unstable
Hardware: x86 Linux
: P5 normal
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-18 14:54 MSK by Vladimir Mokrozub
Modified: 2023-10-25 18:57 MSK (History)
6 users (show)

See Also:


Attachments
sed -i 's/_sysctl, "-w"/_sysctl, "-v", "-w"/' salt/modules/linux_sysctl.py (1018 bytes, patch)
2023-10-15 08:47 MSK, Michael Shigorin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Mokrozub 2023-08-18 14:54:44 MSK
При вызове на миньоне функции sysctl.assign вываливается ошибка:

$ salt-call sysctl.assign kernel.sysrq 0
Error running 'sysctl.assign': sysctl -w failed:

При этом параметр ядра изменяется успешно.

Насколько я понял, это связано с тем, что функция assign() в модуле /usr/lib/python3/site-packages/salt/modules/linux_sysctl.py проверяет вывод "sysctl -w", сравнивая его с переданными аргуменатми. Но в Альте она по умолчанию не выводит ничего, если завершилась успешно; для вывода установленных параметров нужно указать ключ -v:

$ sysctl -v -w
Comment 1 Монастырский Илья 2023-08-22 17:33:59 MSK
Версия пакета: 
salt-3006.1-alt1

Стенды: 
Alt Kworkstation 10.1 x86-64
Alt Education XFCE/KDE 10.1 x86-64
Alt Workstation 10.1 x86-64
Alt Server 10.1 x86-64

Ошибка воспроизводится

Также проверил на версии salt-3006.2-alt1 из задания 327248 - ошибка воспроизвелась

В Sisyphus не проверялось
Comment 2 Монастырский Илья 2023-08-22 18:23:39 MSK
Проверил ошибку в Sisyphus - ошибка воспроизводится

Стенды (обновлены до Sisyphus)
Alt Kworkstation 10.1 x86-64
Alt Education XFCE 10.1 x86-64
Alt Workstation 10.1 x86-64

Версии пакетов:
salt-minion-3006.2-alt1
salt-master-3006.2-alt1
Comment 3 Michael Shigorin 2023-10-15 08:47:06 MSK
Created attachment 14791 [details]
sed -i 's/_sysctl, "-w"/_sysctl, "-v", "-w"/' salt/modules/linux_sysctl.py

Думаю, в salt следует применять именно sysctl -v -w вне зависимости от исхода bug 48008, поскольку в sysctl(8) поведение -w без -v/-q в части вывода или молчания не определено (посмотрел -- в явном виде у нас это не меняется).

Поскольку код апстримный, об изменении недокументированного поведения sysctl из procps-ng стоит сообщить апстриму (http://github.com/saltstack/salt/issues).

sed-патч (только вызов, не комментарий/диагностика):

sed -i 's/_sysctl, "-w"/_sysctl, "-v", "-w"/' ./salt/modules/linux_sysctl.py

root-патч:

sed -i 's/_sysctl, "-w"/_sysctl, "-v", "-w"/' /usr/lib/python3/site-packages/salt/modules/linux_sysctl.py

Пробные задания (сейчас версии в сизифе и p10 одинаковы, но python3 различны):
http://git.altlinux.org/tasks/331813/ (sisyphus)
http://git.altlinux.org/tasks/331814/ (p10)

PS: Владимир, а мы Вас (или Вашего помощника) давно уж заждались на http://altlinux.org/join -- чтоб не ждать, а сразу исправлять, раз уж нашли :-)
Comment 4 Монастырский Илья 2023-10-25 18:57:35 MSK
Версия пакета: 
salt-3006.3-alt3.2

Ошибка больше не воспроизводится