Bug 58058

Summary: Ошибка при добавлении/удалении сайта из существующего sitelink'а
Product: Sisyphus Reporter: Vladislav Glinkin <glinkinvd>
Component: sambaAssignee: Evgeny Sinelnikov <sin>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: sin
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Vladislav Glinkin 2026-02-27 16:55:18 MSK
Версии пакетов:
samba-dc-client-4.22.8-alt1
samba-dc-4.22.8-alt1

Шаги воспроизведения:
1) # samba-tool sites create TestSite1 && samba-tool sites create TestSite2 && samba-tool sites create TestSite3
2) # samba-tool sites sitelinks create TestSiteLink --site TestSite1,TestSite2
3) # samba-tool sites sitelinks add-site TestSiteLink TestSite3

Фактический результат:
ERROR: Error while adding site TestSite3 to site-link TestSiteLink: Expected string as element 0 in list
  File "/usr/lib64/samba-dc/python3.13/samba/netcmd/sitelinks.py", line 328, in run
    m["siteList"] = ldb.MessageElement(new_site_list, FLAG_MOD_REPLACE, "siteList")
                    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Аналогичная проблема проявляется при попытке удаления сайта из существующего SiteLink'а

Помогают изменения:
--- a/usr/lib64/samba-dc/python3.12/samba/netcmd/sitelinks.py  
+++ b/usr/lib64/samba-dc/python3.12/samba/netcmd/sitelinks.py  
@@ -325,7 +325,8 @@ class cmd_site_links_add_site(Command):  
            m = ldb.Message()  
            m.dn = sitelink.dn  

-            m["siteList"] = ldb.MessageElement(new_site_list, FLAG_MOD_REPLACE, "siteList")  
+            new_site_list_str = [str(dn) for dn in new_site_list]  
+            m["siteList"] = ldb.MessageElement(new_site_list_str, FLAG_MOD_REPLACE, "siteList")  

            samdb.modify(m)  

@@ -401,7 +402,8 @@ class cmd_site_links_delete_site(Command):  
            m = ldb.Message()  
            m.dn = sitelink.dn  

-            m["siteList"] = ldb.MessageElement(new_site_list, FLAG_MOD_REPLACE, "siteList")  
+            new_site_list_str = [str(dn) for dn in new_site_list]  
+            m["siteList"] = ldb.MessageElement(new_site_list_str, FLAG_MOD_REPLACE, "siteList")  

            samdb.modify(m)
Comment 1 Vladislav Glinkin 2026-03-11 19:08:46 MSK
Версия пакета: samba-dc-4.22.8-alt2

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