python/samba/netcmd/schema.py: samdb schema update now
authorWilliam Brown <william@blackhats.net.au>
Sat, 19 May 2018 02:19:58 +0000 (12:19 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 29 May 2018 06:30:52 +0000 (08:30 +0200)
When we change schema values, we should trigger a schema update to refresh
the changes applied. This is called after a change is made. A helper to
samdb is added so that it's easier for other locations to call additionally.

Signed-off-by: William Brown <william@blackhats.net.au>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Tue May 29 08:30:52 CEST 2018 on sn-devel-144

python/samba/netcmd/domain.py
python/samba/netcmd/schema.py
python/samba/samdb.py

index 6698fc9583a78cb319f6017819c0dcc957b4a943..819ddd680be95df5c4981ad4e46a3866b389cd0c 100644 (file)
@@ -3909,15 +3909,6 @@ class ldif_schema_update:
         self.dn = None
         self.ldif = ""
 
-    def _ldap_schemaUpdateNow(self, samdb):
-        ldif = """
-dn:
-changetype: modify
-add: schemaUpdateNow
-schemaUpdateNow: 1
-"""
-        samdb.modify_ldif(ldif)
-
     def can_ignore_failure(self, error):
         """Checks if we can safely ignore failure to apply an LDIF update"""
         (num, errstr) = error.args
@@ -3946,7 +3937,7 @@ schemaUpdateNow: 1
                     # Otherwise the OID-to-attribute mapping in
                     # _apply_updates_in_file() won't work, because it
                     # can't lookup the new OID in the schema
-                    self._ldap_schemaUpdateNow(samdb)
+                    samdb.set_schema_update_now()
 
                     samdb.modify_ldif(self.ldif, controls=['relax:0'])
                 else:
index 6579cc9cdcca63ff734558d4542d2c1dc9e6a6ed..9a356a43b8e6061a0800bc696bcd844c5fb0517f 100644 (file)
@@ -125,6 +125,7 @@ class cmd_schema_attribute_modify(Command):
                 str(searchflags_int), ldb.FLAG_MOD_REPLACE, 'searchFlags')
 
         samdb.modify(m)
+        samdb.set_schema_update_now()
         self.outf.write("modified %s" % attr_dn)
 
 class cmd_schema_attribute_show(Command):
index 2b5c43faa540a7909530ef24c2759f11a584e9af..7184fcfa4b0f6da3990eed19c24d926628f3fc99 100644 (file)
@@ -762,6 +762,15 @@ accountExpires: %u
     def set_schema_from_ldb(self, ldb_conn, write_indices_and_attributes=True):
         dsdb._dsdb_set_schema_from_ldb(self, ldb_conn, write_indices_and_attributes)
 
+    def set_schema_update_now(self):
+        ldif = """
+dn:
+changetype: modify
+add: schemaUpdateNow
+schemaUpdateNow: 1
+"""
+        self.modify_ldif(ldif)
+
     def dsdb_DsReplicaAttribute(self, ldb, ldap_display_name, ldif_elements):
         '''convert a list of attribute values to a DRSUAPI DsReplicaAttribute'''
         return dsdb._dsdb_DsReplicaAttribute(ldb, ldap_display_name, ldif_elements)