from ..errors import DpxLdapSessionError
from ..xlate import XLATOR
-__version__ = '1.2.3'
+__version__ = '1.3.0'
LOG = logging.getLogger(__name__)
_ = XLATOR.gettext
self.exit(1)
self.wait_after_write = getattr(self.args, 'wait', self.default_wait_after_write)
+ self.only_struct = getattr(self.args, 'struct', False)
self._check_source_instance()
self._eval_keep_dns()
self.clean_tgt_non_struct_entries()
self.clean_tgt_struct_entries()
self.mirror_struct_entries()
- self.mirror_non_struct_entries()
- self.update_memberships()
-
- self.empty_line()
- msg = ngettext(
- '{:>5} entry deleted.', '{:>5} entries deleted.', self.total_deleted).format(
- self.total_deleted)
- msg += ' ' + ngettext(
- '{:>5} entry updated.', '{:>5} entries updated.', self.total_updated).format(
- self.total_updated)
- msg += ' ' + ngettext(
- '{:>5} entry created.', '{:>5} entries created.', self.total_created).format(
- self.total_created)
- LOG.info(msg)
-
- if not self.quiet:
- self.empty_line()
- title = _('Changes total:')
- print(self.colored(title, 'CYAN'))
- self.line(width=len(title), linechar='=', color='CYAN')
- self.empty_line()
-
- msg = ' * ' + ngettext(
- '{:>5} entry deleted.', '{:>5} entries deleted.', self.total_deleted).format(
- self.total_deleted)
- print(msg)
-
- msg = ' * ' + ngettext(
- '{:>5} entry updated.', '{:>5} entries updated.', self.total_updated).format(
- self.total_updated)
- print(msg)
-
- msg = ' * ' + ngettext(
- '{:>5} entry created.', '{:>5} entries created.', self.total_created).format(
- self.total_created)
- print(msg)
-
- self.empty_line()
+ if not self.only_struct:
+ self.mirror_non_struct_entries()
+ self.update_memberships()
except (DpxLdapReadError, DpxLdapSessionError) as e:
cls = e.__class__.__name__
LOG.error(msg)
self.exit(10)
+ finally:
+ self.print_summary()
+
self.empty_line()
LOG.info(_('Finished.'))
+ # -------------------------------------------------------------------------
+ def print_summary(self):
+ """Print a summary after the complete mirroring."""
+ self.empty_line()
+ title = _('Summary')
+ print(self.colored(title, 'CYAN'))
+ self.line(width=len(title), linechar='=', color='CYAN')
+
+ self.empty_line()
+ msg = ngettext(
+ '{:>5} entry deleted.', '{:>5} entries deleted.', self.total_deleted).format(
+ self.total_deleted)
+ msg += ' ' + ngettext(
+ '{:>5} entry updated.', '{:>5} entries updated.', self.total_updated).format(
+ self.total_updated)
+ msg += ' ' + ngettext(
+ '{:>5} entry created.', '{:>5} entries created.', self.total_created).format(
+ self.total_created)
+ LOG.info(msg)
+
+ if self.quiet:
+ return
+
+ self.empty_line()
+ title = _('Changes total:')
+ print(self.colored(title, 'CYAN'))
+ self.line(width=len(title), linechar='-', color='CYAN')
+ self.empty_line()
+
+ msg = ' * ' + ngettext(
+ '{:>5} entry deleted.', '{:>5} entries deleted.', self.total_deleted).format(
+ self.total_deleted)
+ print(msg)
+
+ msg = ' * ' + ngettext(
+ '{:>5} entry updated.', '{:>5} entries updated.', self.total_updated).format(
+ self.total_updated)
+ print(msg)
+
+ msg = ' * ' + ngettext(
+ '{:>5} entry created.', '{:>5} entries created.', self.total_created).format(
+ self.total_created)
+ print(msg)
+
+ self.empty_line()
+
# -------------------------------------------------------------------------
def get_current_src_entries(self):
"""Get DNs of all entries in the source LDAP instance and sort them."""