from ..config.ldap import LdapConfiguration, LdapConnectionInfo
from ..xlate import XLATOR, format_list
-__version__ = '0.12.2'
+__version__ = '0.12.3'
LOG = logging.getLogger(__name__)
_ = XLATOR.gettext
# =============================================================================
class LdapReadError(LdapAppError):
"""Exception during reading data from a LDAP instance."""
+
pass
def wait_on_read_error(self, value):
val = float(value)
if self._wait_on_read_error <= 0:
- msg = _("The value {v} for {n} must be greater than zero.").format(
+ msg = _('The value {v} for {n} must be greater than zero.').format(
v=val, n='wait_on_read_error')
raise ValueError(msg)
self._wait_on_read_error = val
print()
# -------------------------------------------------------------------------
- def _verify_instances(self, is_admin=None, readonly=None, tier=None, has_sync_source=False):
+ def _verify_instances( # noqa: C901
+ self, is_admin=None, readonly=None, tier=None, has_sync_source=False):
if self.verbose > 1:
LOG.debug(_('Verifying given instances ...'))
e_msg = str(e)
if cur_try >= tries:
break
- LOG.debug(_("Waiting because of a failing read operation."))
+ LOG.debug(_('Waiting because of a failing read operation.'))
time.sleep(self.wait_on_read_error)
if e_msg:
- msg = _("Error on reading entry {dn!r} from instance {inst!r}:").format(
+ msg = _('Error on reading entry {dn!r} from instance {inst!r}:').format(
dn=dn, inst=inst) + ' ' + e_msg
raise LdapReadError(msg)
from ..config.mirror_ldap import MirrorLdapConfiguration
from ..xlate import XLATOR
-__version__ = '1.1.0'
+__version__ = '1.1.1'
LOG = logging.getLogger(__name__)
_ = XLATOR.gettext
if self.cfg.entries_modify and self.tgt_instance in self.cfg.entries_modify:
self.data2modify = self.cfg.entries_modify[self.tgt_instance]
if self.data2modify:
- msg = _("Data to modify:") + '\n' + pp(self.data2modify)
+ msg = _('Data to modify:') + '\n' + pp(self.data2modify)
else:
- msg = _("No data to modify found.")
+ msg = _('No data to modify found.')
LOG.debug(msg)
# -------------------------------------------------------------------------
if self.wait_after_write and not self.simulate:
msg = ngettext(
- "Waiting one second after write actions.",
- "Waiting {} seconds after write actions.",
+ 'Waiting one second after write actions.',
+ 'Waiting {} seconds after write actions.',
self.wait_after_write).format(self.wait_after_write)
elif self.simulate:
msg = _("Don't waiting after simulated write actions.")
msg = _("Don't waiting after write actions, because {} was set to zero.").format(
'wait_after_write')
LOG.info(msg)
- msg = _("The timeout on LDAP operations is {} seconds.").format(self.cfg.ldap_timeout)
+ msg = _('The timeout on LDAP operations is {} seconds.').format(self.cfg.ldap_timeout)
LOG.debug(msg)
try:
# -------------------------------------------------------------------------
def mirror_entry(self, dn):
-
+ """Mirror the entry with the given DN from source to target."""
attributes = [ALL_ATTRIBUTES, 'aci']
if self.verbose > 1:
src_entry = self.get_entry(dn, self.src_instance, attributes)
except LDAPSocketReceiveError as e:
- msg = _("Error on reading entry {!r} from source:").format(dn) + ' ' + str(e)
+ msg = _('Error on reading entry {!r} from source:').format(dn) + ' ' + str(e)
raise LdapReadError(msg)
if not src_entry:
try:
tgt_entry = self.get_entry(dn, self.tgt_instance, attributes, tries=1)
except LDAPSocketReceiveError as e:
- msg = _("Error on reading entry {!r} from target:").format(dn) + ' ' + str(e)
+ msg = _('Error on reading entry {!r} from target:').format(dn) + ' ' + str(e)
raise LdapReadError(msg)
if tgt_entry:
tgt_attribs = self.normalized_attributes(
# -------------------------------------------------------------------------
def modify_src_attribs(self, dn, src_attribs):
- """Modifying some attributes according to configuration."""
-
+ """Modify some attributes according to configuration."""
if not self.data2modify:
return False
- ret = None
modified = False
modified_data = False
- found_modify_data = False
unmodified_data = src_attribs.dict()
attrib_data = action_entries[attrib]
modified_data = False
if action == 'delete':
- modified_data = self._delete_src_attrib(src_attribs, attrib, attrib_data, dn)
+ modified_data = self._delete_src_attrib(
+ src_attribs, attrib, attrib_data, dn)
elif action == 'add':
- modified_data = self._add_src_attrib(src_attribs, attrib, attrib_data, dn)
+ modified_data = self._add_src_attrib(
+ src_attribs, attrib, attrib_data, dn)
elif action == 'replace':
- modified_data = self._replace_src_attrib(src_attribs, attrib, attrib_data, dn)
+ modified_data = self._replace_src_attrib(
+ src_attribs, attrib, attrib_data, dn)
if modified_data:
modified = True
if modified and self.verbose:
if self.verbose == 1:
self.empty_line()
- msg = _("Modifying source data for {!r} ...").format(dn)
+ msg = _('Modifying source data for {!r} ...').format(dn)
LOG.info(msg)
- LOG.debug("Unmodified data:\n" + pp(unmodified_data))
+ LOG.debug('Unmodified data:\n' + pp(unmodified_data))
LOG.debug('Modified data:\n' + pp(src_attribs.dict()))
return modified
def _replace_src_attrib(self, src_attribs, attrib, attrib_data, dn):
if self.verbose > 1:
- LOG.debug(_("Replacing attribute {a!r} in entry {dn!r} ...").format(
+ LOG.debug(_('Replacing attribute {a!r} in entry {dn!r} ...').format(
a=attrib, dn=dn))
src_attrib = None
def _delete_src_attrib(self, src_attribs, attrib, attrib_data, dn):
if self.verbose > 1:
- LOG.debug(_("Deleting attribute {a!r} from entry {dn!r} ...").format(
+ LOG.debug(_('Deleting attribute {a!r} from entry {dn!r} ...').format(
a=attrib, dn=dn))
found = False
def _add_src_attrib(self, src_attribs, attrib, attrib_data, dn):
if self.verbose > 1:
- LOG.debug(_("Adding attribute {a!r} to entry {dn!r} ...").format(
+ LOG.debug(_('Adding attribute {a!r} to entry {dn!r} ...').format(
a=attrib, dn=dn))
src_attrib = None
src_attribs[src_attrib] = attrib_data
return True
- added = False
values_to_add = []
for tgt_value in attrib_data:
found = False
try:
src_entry = self.get_entry(dn, self.src_instance, attributes)
except LDAPSocketReceiveError as e:
- msg = _("Error on reading entry {!r} from source:").format(dn) + ' ' + str(e)
+ msg = _('Error on reading entry {!r} from source:').format(dn) + ' ' + str(e)
raise LdapReadError(msg)
if not src_entry:
msg = _('Did not found {!r} in the source LDAP.').format(dn)
try:
tgt_entry = self.get_entry(dn, self.tgt_instance, attributes, tries=1)
except LDAPSocketReceiveError as e:
- msg = _("Error on reading entry {!r} from target:").format(dn) + ' ' + str(e)
+ msg = _('Error on reading entry {!r} from target:').format(dn) + ' ' + str(e)
raise LdapReadError(msg)
if not tgt_entry:
LOG.warn(_('Target entry {!r} not found.').format(dn))
from .. import pp
from ..xlate import XLATOR
-__version__ = '0.3.1'
+__version__ = '0.3.2'
LOG = logging.getLogger(__name__)
_ = XLATOR.gettext
def _eval_modify_inst(self, inst_name, inst_section_name, inst_section):
if self.verbose > 1:
- LOG.debug(_('Evaluating configuration section {sn!r} ...').format(sn=inst_section_name))
+ LOG.debug(_('Evaluating configuration section {sn!r} ...').format(
+ sn=inst_section_name))
if not isinstance(inst_section, Mapping):
LOG.warning(_('Section {sn!r} is not a {what}.').format(
self, action_section_name, action_lc, action_section, inst_name, dn_pattern):
if self.verbose > 2:
- LOG.debug(_('Evaluating configuration section {sn!r} ...').format(sn=action_section_name))
+ LOG.debug(_('Evaluating configuration section {sn!r} ...').format(
+ sn=action_section_name))
if not isinstance(action_section, Mapping):
LOG.warning(_('Section {sn!r} is not a {what}.').format(
self._set_modify_action(inst_name, dn_pattern, action_lc, entry, None)
continue
msg = _('Empty value for section {sn!r} found.').format(action_section_name)
+ LOG.warning(msg)
continue
if is_sequence(val):
for value in val: