了解Python ldap中的命名冲突
我有一组需要保存的差异,它们都是新记录。以下代码用于提交更改集:了解Python ldap中的命名冲突,python,python-2.7,openldap,ldap-query,Python,Python 2.7,Openldap,Ldap Query,我有一组需要保存的差异,它们都是新记录。以下代码用于提交更改集: 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)
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()
不幸的是,我遇到以下错误:
回溯最近一次调用:File./ldapUpdate.py,第868行,
在里面
lMods.commit文件。/ldapUpdate.py,commit中的第769行
l、 添加ldif文件/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py,
第216行,添加
返回self.add_ext_sdn,modlist,None,None文件/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py,
第202行,添加外部
resp_type,resp_data,resp_msgid,resp_ctrls=self.result3msgid,all=1,timeout=self.timeout文件
/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py,
第519行,结果3
resp_ctrl_classes=resp_ctrl_classes文件/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py,
第526行,结果4
ldap\u result=self.\u ldap\u callself.\u l.result4,msgid,all,timeout,add\u ctrls,add\u mediates,add\u extop
文件
/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py,
第108行,in_ldap_调用
result=func*args,**kwargs ldap.NAMING_冲突:{'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" ]
]
SLAPD不喜欢的src字段是什么?是否有人对命名违规有更深入的了解
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' )
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' )
ctlapp在架构中具有此定义
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' )
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' )
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' )
平等条款缺失了。这就是违反命名规则的原因