diff options
author | Tomas Babej <tbabej@redhat.com> | 2015-04-29 08:16:07 +0200 |
---|---|---|
committer | Tomas Babej <tbabej@redhat.com> | 2015-07-02 13:23:21 +0200 |
commit | 7017d9e8a64d7974cbe61c82885256a75a9c2cd7 (patch) | |
tree | 44c425ca9f0a8e44f958ccf833a3ed832a837736 /ipaserver | |
parent | d584eb700111bb57f6d10018f4b56d6f10a96d21 (diff) | |
download | freeipa-7017d9e8a64d7974cbe61c82885256a75a9c2cd7.tar.gz freeipa-7017d9e8a64d7974cbe61c82885256a75a9c2cd7.tar.xz freeipa-7017d9e8a64d7974cbe61c82885256a75a9c2cd7.zip |
winsync-migrate: Delete winsync agreement prior to migration
https://fedorahosted.org/freeipa/ticket/4524
Reviewed-By: Martin Babinsky <mbabinsk@redhat.com>
Diffstat (limited to 'ipaserver')
-rw-r--r-- | ipaserver/winsync_migrate/base.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/ipaserver/winsync_migrate/base.py b/ipaserver/winsync_migrate/base.py index afdbda2de..21056a070 100644 --- a/ipaserver/winsync_migrate/base.py +++ b/ipaserver/winsync_migrate/base.py @@ -24,6 +24,7 @@ from ipalib import api from ipalib import errors from ipapython import admintool from ipapython.dn import DN +from ipapython.ipautil import realm_to_suffix from ipapython.ipa_log_manager import log_mgr from ipaserver.plugins.ldap2 import ldap2 from ipaserver.install import replication @@ -124,6 +125,36 @@ class MigrateWinsync(admintool.AdminTool): "Replication agreement between %s and %s is not winsync." % (api.env.host, self.options.server)) + # Save the reference to the replication manager in the object + self.manager = manager + + def delete_winsync_agreement(self): + """ + Deletes the winsync agreement between the current master and the + given AD server. + """ + + try: + self.manager.delete_agreement(self.options.server) + self.manager.delete_referral(self.options.server) + + dn = DN(('cn', self.options.server), + ('cn', 'replicas'), + ('cn', 'ipa'), + ('cn', 'etc'), + realm_to_suffix(api.env.realm)) + entries = self.manager.conn.get_entries(dn, + self.ldap.SCOPE_SUBTREE) + if entries: + entries.sort(key=len, reverse=True) + for entry in entries: + self.ldap.delete_entry(entry) + + except Exception as e: + raise admintool.ScriptError( + "Deletion of the winsync agreement failed: %s" % str(e)) + + def create_id_user_override(self, entry): """ Creates ID override corresponding to this user entry. @@ -197,7 +228,11 @@ class MigrateWinsync(admintool.AdminTool): def run(self): super(MigrateWinsync, self).run() + # Stop winsync agreement with the given host + self.delete_winsync_agreement() + # Create ID overrides replacing the user winsync entries entries = self.find_winsync_users() for entry in entries: self.create_id_user_override(entry) + self.ldap.delete_entry(entry) |