483b06
From f0bd45fb0c1071006887dc10abac233d2756d951 Mon Sep 17 00:00:00 2001
483b06
From: Stanislav Laznicka <slaznick@redhat.com>
483b06
Date: Thu, 13 Apr 2017 09:15:47 +0200
483b06
Subject: [PATCH] Move the compat plugin setup at the end of install
483b06
483b06
The compat plugin was causing deadlocks with the topology plugin. Move
483b06
its setup at the end of the installation and remove the
483b06
cn=topology,cn=ipa,cn=etc subtree from its scope.
483b06
483b06
https://pagure.io/freeipa/issue/6821
483b06
483b06
Reviewed-By: Martin Basti <mbasti@redhat.com>
483b06
---
483b06
 install/share/Makefile.am                          |  1 -
483b06
 install/updates/10-schema_compat.update            | 93 ---------------------
483b06
 .../80-schema_compat.update}                       | 96 +++++++++++++++++++++-
483b06
 install/updates/Makefile.am                        |  2 +-
483b06
 ipaplatform/base/paths.py                          |  3 +-
483b06
 ipaserver/install/dsinstance.py                    |  9 --
483b06
 6 files changed, 98 insertions(+), 106 deletions(-)
483b06
 delete mode 100644 install/updates/10-schema_compat.update
483b06
 rename install/{share/schema_compat.uldif => updates/80-schema_compat.update} (55%)
483b06
483b06
diff --git a/install/share/Makefile.am b/install/share/Makefile.am
483b06
index 9e539a3f30c2979de26575ba66bbb23fecd03a88..b27861da37153d77d693ce6e46340525bbd50173 100644
483b06
--- a/install/share/Makefile.am
483b06
+++ b/install/share/Makefile.am
483b06
@@ -65,7 +65,6 @@ dist_app_DATA =				\
483b06
 	opendnssec_conf.template	\
483b06
 	opendnssec_kasp.template	\
483b06
 	unique-attributes.ldif		\
483b06
-	schema_compat.uldif		\
483b06
 	ldapi.ldif			\
483b06
 	wsgi.py				\
483b06
 	repoint-managed-entries.ldif	\
483b06
diff --git a/install/updates/10-schema_compat.update b/install/updates/10-schema_compat.update
483b06
deleted file mode 100644
483b06
index fbe8703407aacd75baf160630c20835a1b4ddc65..0000000000000000000000000000000000000000
483b06
--- a/install/updates/10-schema_compat.update
483b06
+++ /dev/null
483b06
@@ -1,93 +0,0 @@
483b06
-dn: cn=sudoers,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-only:schema-compat-entry-rdn:%ifeq("ipaEnabledFlag", "FALSE", "DISABLED", "cn=%{cn}")
483b06
-add:schema-compat-entry-attribute: sudoHost=%ifeq("hostCategory","all","ALL","%{hostMask}")
483b06
-add:schema-compat-entry-attribute: sudoRunAsUser=%%%{ipaSudoRunAsExtUserGroup}
483b06
-# Fix for #4324 (regression of #1309)
483b06
-remove:schema-compat-entry-attribute:sudoRunAsGroup=%deref("ipaSudoRunAs","cn")
483b06
-remove:schema-compat-entry-attribute:sudoRunAsUser=%{ipaSudoRunAsExtUser}
483b06
-remove:schema-compat-entry-attribute:sudoRunAsUser=%%%{ipaSudoRunAsExtUserGroup}
483b06
-remove:schema-compat-entry-attribute:sudoRunAsUser=%deref("ipaSudoRunAs","uid")
483b06
-remove:schema-compat-entry-attribute:sudoRunAsGroup=%{ipaSudoRunAsExtGroup}
483b06
-remove:schema-compat-entry-attribute:sudoRunAsGroup=%deref_f("ipaSudoRunAsGroup","(objectclass=posixGroup)","cn")
483b06
-
483b06
-# We need to add the value in a separate transaction
483b06
-dn: cn=sudoers,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add: schema-compat-entry-attribute: sudoRunAsGroup=%deref_f("ipaSudoRunAsGroup","(objectclass=posixGroup)","cn")
483b06
-add: schema-compat-entry-attribute: sudoRunAsUser=%ifeq("ipaSudoRunAsUserCategory","all","ALL","%{ipaSudoRunAsExtUser}")
483b06
-add: schema-compat-entry-attribute: sudoRunAsUser=%ifeq("ipaSudoRunAsUserCategory","all","ALL","%%%{ipaSudoRunAsExtUserGroup}")
483b06
-add: schema-compat-entry-attribute: sudoRunAsUser=%ifeq("ipaSudoRunAsUserCategory","all","ALL","%deref_f(\"ipaSudoRunAs\",\"(objectclass=posixAccount)\",\"uid\")")
483b06
-add: schema-compat-entry-attribute: sudoRunAsGroup=%ifeq("ipaSudoRunAsGroupCategory","all","ALL","%{ipaSudoRunAsExtGroup}")
483b06
-add: schema-compat-entry-attribute: sudoRunAsGroup=%ifeq("ipaSudoRunAsGroupCategory","all","ALL","%deref_f(\"ipaSudoRunAsGroup\",\"(objectclass=posixGroup)\",\"cn\")")
483b06
-remove: schema-compat-ignore-subtree: cn=changelog
483b06
-remove: schema-compat-ignore-subtree: o=ipaca
483b06
-add: schema-compat-restrict-subtree: $SUFFIX
483b06
-add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
-
483b06
-# Change padding for host and userCategory so the pad returns the same value
483b06
-# as the original, '' or -.
483b06
-dn: cn=ng,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-replace: schema-compat-entry-attribute:nisNetgroupTriple=(%link("%ifeq(\"hostCategory\",\"all\",\"\",\"%collect(\\\"%{externalHost}\\\",\\\"%deref(\\\\\\\"memberHost\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberHost\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\")\")","-",",","%ifeq(\"userCategory\",\"all\",\"\",\"%collect(\\\"%deref(\\\\\\\"memberUser\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberUser\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\")\")","-"),%{nisDomainName:-})::nisNetgroupTriple=(%link("%ifeq(\"hostCategory\",\"all\",\"\",\"%collect(\\\"%{externalHost}\\\",\\\"%deref(\\\\\\\"memberHost\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberHost\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\")\")","%ifeq(\"hostCategory\",\"all\",\"\",\"-\")",",","%ifeq(\"userCategory\",\"all\",\"\",\"%collect(\\\"%deref(\\\\\\\"memberUser\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberUser\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\")\")","%ifeq(\"userCategory\",\"all\",\"\",\"-\")"),%{nisDomainName:-})
483b06
-remove: schema-compat-ignore-subtree: cn=changelog
483b06
-remove: schema-compat-ignore-subtree: o=ipaca
483b06
-add: schema-compat-restrict-subtree: $SUFFIX
483b06
-add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
-
483b06
-dn: cn=computers, cn=Schema Compatibility, cn=plugins, cn=config
483b06
-default:objectClass: top
483b06
-default:objectClass: extensibleObject
483b06
-default:cn: computers
483b06
-default:schema-compat-container-group: cn=compat, $SUFFIX
483b06
-default:schema-compat-container-rdn: cn=computers
483b06
-default:schema-compat-search-base: cn=computers, cn=accounts, $SUFFIX
483b06
-default:schema-compat-search-filter: (&(macAddress=*)(fqdn=*)(objectClass=ipaHost))
483b06
-default:schema-compat-entry-rdn: cn=%first("%{fqdn}")
483b06
-default:schema-compat-entry-attribute: objectclass=device
483b06
-default:schema-compat-entry-attribute: objectclass=ieee802Device
483b06
-default:schema-compat-entry-attribute: cn=%{fqdn}
483b06
-default:schema-compat-entry-attribute: macAddress=%{macAddress}
483b06
-remove: schema-compat-ignore-subtree: cn=changelog
483b06
-remove: schema-compat-ignore-subtree: o=ipaca
483b06
-add: schema-compat-restrict-subtree: $SUFFIX
483b06
-add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
-
483b06
-dn: cn=sudoers,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add:schema-compat-entry-attribute: sudoOrder=%{sudoOrder}
483b06
-
483b06
-dn: cn=users,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-remove: schema-compat-ignore-subtree: cn=changelog
483b06
-remove: schema-compat-ignore-subtree: o=ipaca
483b06
-add: schema-compat-restrict-subtree: $SUFFIX
483b06
-add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
-
483b06
-dn: cn=groups,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-remove: schema-compat-ignore-subtree: cn=changelog
483b06
-remove: schema-compat-ignore-subtree: o=ipaca
483b06
-add: schema-compat-restrict-subtree: $SUFFIX
483b06
-add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
-
483b06
-dn: cn=Schema Compatibility,cn=plugins,cn=config
483b06
-# We need to run schema-compat pre-bind callback before
483b06
-# other IPA pre-bind callbacks to make sure bind DN is
483b06
-# rewritten to the original entry if needed
483b06
-add:nsslapd-pluginprecedence: 40
483b06
-
483b06
-dn: cn=users,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","objectclass=ipaOverrideTarget","")
483b06
-add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","ipaanchoruuid=:IPA:$DOMAIN:%{ipauniqueid}","")
483b06
-add:schema-compat-entry-attribute: ipaanchoruuid=%{ipaanchoruuid}
483b06
-add:schema-compat-entry-attribute: %ifeq("ipaanchoruuid","%{ipaanchoruuid}","objectclass=ipaOverrideTarget","")
483b06
-
483b06
-dn: cn=groups,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","objectclass=ipaOverrideTarget","")
483b06
-add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","ipaanchoruuid=:IPA:$DOMAIN:%{ipauniqueid}","")
483b06
-add:schema-compat-entry-attribute: ipaanchoruuid=%{ipaanchoruuid}
483b06
-add:schema-compat-entry-attribute: %ifeq("ipaanchoruuid","%{ipaanchoruuid}","objectclass=ipaOverrideTarget","")
483b06
-
483b06
-dn: cn=users,cn=Schema Compatibility,cn=plugins,cn=config
483b06
-add:schema-compat-entry-attribute: uid=%{uid}
483b06
-replace:schema-compat-entry-rdn: uid=%{uid}::uid=%first("%{uid}")
483b06
diff --git a/install/share/schema_compat.uldif b/install/updates/80-schema_compat.update
483b06
similarity index 55%
483b06
rename from install/share/schema_compat.uldif
483b06
rename to install/updates/80-schema_compat.update
483b06
index 66f8ea1c31bc534b3ee134c6df6132f4318c81fc..06cbcab8ad809d95a907c161044ff91df827ebf3 100644
483b06
--- a/install/share/schema_compat.uldif
483b06
+++ b/install/updates/80-schema_compat.update
483b06
@@ -1,5 +1,6 @@
483b06
 #
483b06
-# Enable the Schema Compatibility plugin provided by slapi-nis.
483b06
+# Setup the Schema Compatibility plugin provided by slapi-nis.
483b06
+# This should be done after all other updates have been applied
483b06
 #
483b06
 # http://slapi-nis.fedorahosted.org/
483b06
 #
483b06
@@ -126,3 +127,96 @@ default:schema-compat-entry-attribute: macAddress=%{macAddress}
483b06
 dn: oid=2.16.840.1.113730.3.4.9,cn=features,cn=config
483b06
 only:aci: (targetattr !="aci")(version 3.0; acl "VLV Request Control"; allow (read, search, compare, proxy) userdn = "ldap:///anyone"; )
483b06
 
483b06
+dn: cn=sudoers,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+only:schema-compat-entry-rdn:%ifeq("ipaEnabledFlag", "FALSE", "DISABLED", "cn=%{cn}")
483b06
+add:schema-compat-entry-attribute: sudoHost=%ifeq("hostCategory","all","ALL","%{hostMask}")
483b06
+add:schema-compat-entry-attribute: sudoRunAsUser=%%%{ipaSudoRunAsExtUserGroup}
483b06
+# Fix for #4324 (regression of #1309)
483b06
+remove:schema-compat-entry-attribute:sudoRunAsGroup=%deref("ipaSudoRunAs","cn")
483b06
+remove:schema-compat-entry-attribute:sudoRunAsUser=%{ipaSudoRunAsExtUser}
483b06
+remove:schema-compat-entry-attribute:sudoRunAsUser=%%%{ipaSudoRunAsExtUserGroup}
483b06
+remove:schema-compat-entry-attribute:sudoRunAsUser=%deref("ipaSudoRunAs","uid")
483b06
+remove:schema-compat-entry-attribute:sudoRunAsGroup=%{ipaSudoRunAsExtGroup}
483b06
+remove:schema-compat-entry-attribute:sudoRunAsGroup=%deref_f("ipaSudoRunAsGroup","(objectclass=posixGroup)","cn")
483b06
+
483b06
+# We need to add the value in a separate transaction
483b06
+dn: cn=sudoers,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add: schema-compat-entry-attribute: sudoRunAsGroup=%deref_f("ipaSudoRunAsGroup","(objectclass=posixGroup)","cn")
483b06
+add: schema-compat-entry-attribute: sudoRunAsUser=%ifeq("ipaSudoRunAsUserCategory","all","ALL","%{ipaSudoRunAsExtUser}")
483b06
+add: schema-compat-entry-attribute: sudoRunAsUser=%ifeq("ipaSudoRunAsUserCategory","all","ALL","%%%{ipaSudoRunAsExtUserGroup}")
483b06
+add: schema-compat-entry-attribute: sudoRunAsUser=%ifeq("ipaSudoRunAsUserCategory","all","ALL","%deref_f(\"ipaSudoRunAs\",\"(objectclass=posixAccount)\",\"uid\")")
483b06
+add: schema-compat-entry-attribute: sudoRunAsGroup=%ifeq("ipaSudoRunAsGroupCategory","all","ALL","%{ipaSudoRunAsExtGroup}")
483b06
+add: schema-compat-entry-attribute: sudoRunAsGroup=%ifeq("ipaSudoRunAsGroupCategory","all","ALL","%deref_f(\"ipaSudoRunAsGroup\",\"(objectclass=posixGroup)\",\"cn\")")
483b06
+remove: schema-compat-ignore-subtree: cn=changelog
483b06
+remove: schema-compat-ignore-subtree: o=ipaca
483b06
+add: schema-compat-restrict-subtree: $SUFFIX
483b06
+add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
+
483b06
+# Change padding for host and userCategory so the pad returns the same value
483b06
+# as the original, '' or -.
483b06
+dn: cn=ng,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+replace: schema-compat-entry-attribute:nisNetgroupTriple=(%link("%ifeq(\"hostCategory\",\"all\",\"\",\"%collect(\\\"%{externalHost}\\\",\\\"%deref(\\\\\\\"memberHost\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberHost\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\")\")","-",",","%ifeq(\"userCategory\",\"all\",\"\",\"%collect(\\\"%deref(\\\\\\\"memberUser\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberUser\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\")\")","-"),%{nisDomainName:-})::nisNetgroupTriple=(%link("%ifeq(\"hostCategory\",\"all\",\"\",\"%collect(\\\"%{externalHost}\\\",\\\"%deref(\\\\\\\"memberHost\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberHost\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"fqdn\\\\\\\")\\\")\")","%ifeq(\"hostCategory\",\"all\",\"\",\"-\")",",","%ifeq(\"userCategory\",\"all\",\"\",\"%collect(\\\"%deref(\\\\\\\"memberUser\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\",\\\"%deref_r(\\\\\\\"memberUser\\\\\\\",\\\\\\\"member\\\\\\\",\\\\\\\"uid\\\\\\\")\\\")\")","%ifeq(\"userCategory\",\"all\",\"\",\"-\")"),%{nisDomainName:-})
483b06
+remove: schema-compat-ignore-subtree: cn=changelog
483b06
+remove: schema-compat-ignore-subtree: o=ipaca
483b06
+add: schema-compat-restrict-subtree: $SUFFIX
483b06
+add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
+
483b06
+dn: cn=computers, cn=Schema Compatibility, cn=plugins, cn=config
483b06
+default:objectClass: top
483b06
+default:objectClass: extensibleObject
483b06
+default:cn: computers
483b06
+default:schema-compat-container-group: cn=compat, $SUFFIX
483b06
+default:schema-compat-container-rdn: cn=computers
483b06
+default:schema-compat-search-base: cn=computers, cn=accounts, $SUFFIX
483b06
+default:schema-compat-search-filter: (&(macAddress=*)(fqdn=*)(objectClass=ipaHost))
483b06
+default:schema-compat-entry-rdn: cn=%first("%{fqdn}")
483b06
+default:schema-compat-entry-attribute: objectclass=device
483b06
+default:schema-compat-entry-attribute: objectclass=ieee802Device
483b06
+default:schema-compat-entry-attribute: cn=%{fqdn}
483b06
+default:schema-compat-entry-attribute: macAddress=%{macAddress}
483b06
+remove: schema-compat-ignore-subtree: cn=changelog
483b06
+remove: schema-compat-ignore-subtree: o=ipaca
483b06
+add: schema-compat-restrict-subtree: $SUFFIX
483b06
+add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
+
483b06
+dn: cn=sudoers,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add:schema-compat-entry-attribute: sudoOrder=%{sudoOrder}
483b06
+
483b06
+dn: cn=users,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+remove: schema-compat-ignore-subtree: cn=changelog
483b06
+remove: schema-compat-ignore-subtree: o=ipaca
483b06
+add: schema-compat-restrict-subtree: $SUFFIX
483b06
+add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
+
483b06
+dn: cn=groups,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+remove: schema-compat-ignore-subtree: cn=changelog
483b06
+remove: schema-compat-ignore-subtree: o=ipaca
483b06
+add: schema-compat-restrict-subtree: $SUFFIX
483b06
+add: schema-compat-restrict-subtree: cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add: schema-compat-ignore-subtree: cn=dna,cn=ipa,cn=etc,$SUFFIX
483b06
+
483b06
+dn: cn=Schema Compatibility,cn=plugins,cn=config
483b06
+# We need to run schema-compat pre-bind callback before
483b06
+# other IPA pre-bind callbacks to make sure bind DN is
483b06
+# rewritten to the original entry if needed
483b06
+add:nsslapd-pluginprecedence: 40
483b06
+
483b06
+dn: cn=users,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","objectclass=ipaOverrideTarget","")
483b06
+add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","ipaanchoruuid=:IPA:$DOMAIN:%{ipauniqueid}","")
483b06
+add:schema-compat-entry-attribute: ipaanchoruuid=%{ipaanchoruuid}
483b06
+add:schema-compat-entry-attribute: %ifeq("ipaanchoruuid","%{ipaanchoruuid}","objectclass=ipaOverrideTarget","")
483b06
+
483b06
+dn: cn=groups,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","objectclass=ipaOverrideTarget","")
483b06
+add:schema-compat-entry-attribute: %ifeq("ipauniqueid","%{ipauniqueid}","ipaanchoruuid=:IPA:$DOMAIN:%{ipauniqueid}","")
483b06
+add:schema-compat-entry-attribute: ipaanchoruuid=%{ipaanchoruuid}
483b06
+add:schema-compat-entry-attribute: %ifeq("ipaanchoruuid","%{ipaanchoruuid}","objectclass=ipaOverrideTarget","")
483b06
+
483b06
+dn: cn=users,cn=Schema Compatibility,cn=plugins,cn=config
483b06
+add:schema-compat-entry-attribute: uid=%{uid}
483b06
+replace:schema-compat-entry-rdn: uid=%{uid}::uid=%first("%{uid}")
483b06
diff --git a/install/updates/Makefile.am b/install/updates/Makefile.am
483b06
index 0ff0edb93abf4c4656b7504bd9ce8f774918fc2d..e18d01127b592a6c7941729d6160d10fb2d3e76c 100644
483b06
--- a/install/updates/Makefile.am
483b06
+++ b/install/updates/Makefile.am
483b06
@@ -9,7 +9,6 @@ app_DATA =				\
483b06
 	10-selinuxusermap.update	\
483b06
 	10-rootdse.update		\
483b06
 	10-uniqueness.update		\
483b06
-	10-schema_compat.update		\
483b06
 	19-managed-entries.update	\
483b06
 	20-aci.update			\
483b06
 	20-dna.update			\
483b06
@@ -62,6 +61,7 @@ app_DATA =				\
483b06
 	73-custodia.update		\
483b06
 	73-winsync.update		\
483b06
 	73-certmap.update		\
483b06
+	80-schema_compat.update \
483b06
 	90-post_upgrade_plugins.update	\
483b06
 	$(NULL)
483b06
 
483b06
diff --git a/ipaplatform/base/paths.py b/ipaplatform/base/paths.py
483b06
index 9cf160fac483157b508dedac7a5fc26cb12c63a4..dbdd71ed0b4d69c1101db4aeb7d93152ab8aa730 100644
483b06
--- a/ipaplatform/base/paths.py
483b06
+++ b/ipaplatform/base/paths.py
483b06
@@ -236,7 +236,8 @@ class BasePathNamespace(object):
483b06
     HTML_KRBREALM_CON = "/usr/share/ipa/html/krbrealm.con"
483b06
     NIS_ULDIF = "/usr/share/ipa/nis.uldif"
483b06
     NIS_UPDATE_ULDIF = "/usr/share/ipa/nis-update.uldif"
483b06
-    SCHEMA_COMPAT_ULDIF = "/usr/share/ipa/schema_compat.uldif"
483b06
+    SCHEMA_COMPAT_ULDIF = "/usr/share/ipa/updates/91-schema_compat.update"
483b06
+    SCHEMA_COMPAT_POST_ULDIF = "/usr/share/ipa/schema_compat_post.uldif"
483b06
     IPA_JS_PLUGINS_DIR = "/usr/share/ipa/ui/js/plugins"
483b06
     UPDATES_DIR = "/usr/share/ipa/updates/"
483b06
     DICT_WORDS = "/usr/share/dict/words"
483b06
diff --git a/ipaserver/install/dsinstance.py b/ipaserver/install/dsinstance.py
483b06
index 99a1781ca4475805e9bf3b2bac3f26b5fb107a43..403fe8489fdd9e0dbf40dd4df3794b51185d45b9 100644
483b06
--- a/ipaserver/install/dsinstance.py
483b06
+++ b/ipaserver/install/dsinstance.py
483b06
@@ -38,7 +38,6 @@ from ipapython import dogtag
483b06
 from ipaserver.install import service
483b06
 from ipaserver.install import installutils
483b06
 from ipaserver.install import certs
483b06
-from ipaserver.install import ldapupdate
483b06
 from ipaserver.install import replication
483b06
 from ipaserver.install import sysupgrade
483b06
 from ipaserver.install import upgradeinstance
483b06
@@ -281,8 +280,6 @@ class DsInstance(service.Service):
483b06
         self.step("configuring Posix uid/gid generation",
483b06
                   self.__config_uidgid_gen)
483b06
         self.step("adding replication acis", self.__add_replication_acis)
483b06
-        self.step("enabling compatibility plugin",
483b06
-                  self.__enable_compat_plugin)
483b06
         self.step("activating sidgen plugin", self._add_sidgen_plugin)
483b06
         self.step("activating extdom plugin", self._add_extdom_plugin)
483b06
         self.step("tuning directory server", self.__tuning)
483b06
@@ -706,12 +703,6 @@ class DsInstance(service.Service):
483b06
     def __add_winsync_module(self):
483b06
         self._ldap_mod("ipa-winsync-conf.ldif")
483b06
 
483b06
-    def __enable_compat_plugin(self):
483b06
-        ld = ldapupdate.LDAPUpdate(dm_password=self.dm_password, sub_dict=self.sub_dict)
483b06
-        rv = ld.update([paths.SCHEMA_COMPAT_ULDIF])
483b06
-        if not rv:
483b06
-            raise RuntimeError("Enabling compatibility plugin failed")
483b06
-
483b06
     def __config_version_module(self):
483b06
         self._ldap_mod("version-conf.ldif")
483b06
 
483b06
-- 
483b06
2.12.2
483b06