Понимание нарушений именования в Python-ldap - PullRequest
0 голосов
/ 01 июня 2018

У меня есть набор различий, которые нужно «сохранить» (все они новые записи).Следующий код используется для фиксации набора изменений:

def commit(self):
    l = ldap.initialize(self.ldapURL)
    l.simple_bind_s(self.ldapUser,self.ldapPass)
    for dn,ldif in self.ldapAdds.iteritems():
        try:
            print json.dumps(ldif,indent=4)
            l.add_s(dn,ldif)
            print "a",
        except ldap.ALREADY_EXISTS:
            pass

    for dn,ldif in self.ldapMods.iteritems():
        l.modify_s(dn,ldif)
        print "m",
    print ""
    l.unbind_s()
    self.ldapAdds = dict()
    self.ldapMods = dict()

К сожалению, я получаю следующую ошибку:

Traceback (последний вызов был последним): Файл "./ldapUpdate.py ", строка 868, в файле lMods.commit ()" ./ldapUpdate.py ", строка 769, в файле фиксации l.add_s (dn, ldif)" / sites / utils / Python / lib / python2.7 / site-packages / ldap / ldapobject.py ", строка 216, в add_s вернуть файл self.add_ext_s (dn, modlist, None, None), файл" /sites/utils/Python/lib/python2.7/site-packages/ldap / ldapobject.py ", строка 202, в add_ext_s resp_type, resp_data, resp_msgid, resp_ctrls = self.result3 (msgid, all = 1, timeout = self.timeout) Файл" /sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py ", строка 519, в файле result3 resp_ctrl_classes = resp_ctrl_classes" /sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py ", строка 526, вresult4 ldap_result = self._ldap_call (self._l.result4, msgid, all, timeout, add_ctrls, add_intermediates, add_extop) Файл "/sites/utils/Python/lib/python2.7/site-packages / ldap / ldapobject.py ", строка 108, в _ldap_call result = func (* args, ** kwargs) ldap.NAMING_VIOLATION: {'info':" атрибут именования 'src' не имеет правила соответствия равенства ", 'desc ':' Нарушение именования '}

Неудачная запись ldiff выглядит следующим образом:

[
    [  "src",   "ecare/ecare-self.ear" ], 
    [  "modname",  "ecare-self"  ], 
    [  "dest",   "/sites/MODULES/ecare/ecare-self.ear"], 
    [  "objectClass",  [  "ctlapp", "ctlmodule", "top" ] ], 
    [  "action",  "rsync" ], 
    [  "depot",  "DEPOT" ]
]

Что в поле "src" не нравится SLAPD?Есть ли у кого-то больше информации о NAMING_VIOLATION?

"src" имеет это определение в схеме

attributetype ( 1.3.6.4.2.7888.5.1.16 NAME 'src'
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
                X-ORIGIN 'user defined' )

"ctlapp" имеет это определение в схеме

objectclass ( 1.3.6.4.2.7888.5.1.22 NAME 'ctlapp'
                DESC 'ATT deployable component'
                SUP ctlmodule STRUCTURAL
                MUST ( src $ depot $ dest $ action )
                X-ORIGIN 'user defined' )

1 Ответ

0 голосов
/ 01 июня 2018

Правильное определение схемы для "src" должно было быть:

attributetype ( 1.3.6.4.2.7888.5.1.16 NAME 'src'
                DESC 'ATT source path'
                EQUALITY caseExactMatch
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512}
                X-ORIGIN 'user defined' )

Отсутствует предложение "равенства".Вот что объясняет NAMING_VIOLATION.

...