This is an automated email from the git hooks/post-receive script.
firstyear pushed a commit to branch master
in repository 389-ds-base.
commit ab718daabfb1b98f432b5bcc48c162b5886ad2ff
Author: Thierry bordaz (tbordaz) <tbordaz(a)redhat.com>
Date: Thu Nov 28 14:33:33 2013 +0100
Change enableReplication/Replica.add interface to use role. + error handling with
exception
Reviewed by: Rich Megginson (thank rich for all your reviews)
---
src/lib389/lib389/__init__.py | 19 +++++++++++--------
src/lib389/lib389/brooker.py | 21 +++++++++++++++------
2 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/src/lib389/lib389/__init__.py b/src/lib389/lib389/__init__.py
index 42672b4..b69151f 100644
--- a/src/lib389/lib389/__init__.py
+++ b/src/lib389/lib389/__init__.py
@@ -1250,39 +1250,42 @@ class DirSrv(SimpleLDAPObject):
def enableReplication(self, suffix=None, role=None, replicaId=CONSUMER_REPLICAID,
binddn=None):
if not suffix:
log.fatal("enableReplication: suffix not specified")
- return 1
+ raise ValueError("suffix missing")
if not role:
log.fatal("enableReplication: replica role not specify
(REPLICAROLE_*)")
- return 1
+ raise ValueError("role missing")
#
# Check the validity of the parameters
#
# First role and replicaID
- if role == REPLICAROLE_MASTER:
+ if role != REPLICAROLE_MASTER and role != REPLICAROLE_HUB and role !=
REPLICAROLE_CONSUMER:
+ log.fatal("enableReplication: replica role invalid (%s) " % role)
+ raise ValueError("invalid role: %s" % role)
+
# master
replica_type = REPLICA_RDWR_TYPE
else:
# hub or consumer
replica_type = REPLICA_RDONLY_TYPE
- if replica_type == REPLICA_RDWR_TYPE:
+ if role == REPLICAROLE_MASTER:
# check the replicaId [1..CONSUMER_REPLICAID[
if not decimal.Decimal(replicaId) or (replicaId <= 0) or (replicaId
>=CONSUMER_REPLICAID):
log.fatal("enableReplication: invalid replicaId (%s) for a RW
replica" % replicaId)
- return 1
+ raise ValueError("invalid replicaId %d (expected
[1..CONSUMER_REPLICAID[" % replicaId)
elif replicaId != CONSUMER_REPLICAID:
# check the replicaId is CONSUMER_REPLICAID
log.fatal("enableReplication: invalid replicaId (%s) for a Read replica
(expected %d)" % (replicaId, CONSUMER_REPLICAID))
- return 1
+ raise ValueError("invalid replicaId: %d for HUB/CONSUMER replicaId is
CONSUMER_REPLICAID" % replicaId)
# Now check we have a suffix
entries_backend = self.getBackendsForSuffix(suffix, ['nsslapd-suffix'])
if not entries_backend:
log.fatal("enableReplication: enable to retrieve the backend for
%s" % suffix)
- return 1
+ raise ValueError("no backend for suffix %s" % suffix)
ent = entries_backend[0]
if normalizeDN(suffix) != normalizeDN(ent.getValue('nsslapd-suffix')):
@@ -1309,7 +1312,7 @@ class DirSrv(SimpleLDAPObject):
self.replica.create_repl_manager()
# then enable replication
- ret = self.replica.add(suffix=suffix, binddn=binddn, rtype=replica_type,
rid=replicaId)
+ ret = self.replica.add(suffix=suffix, binddn=binddn, role=role, rid=replicaId)
return ret
diff --git a/src/lib389/lib389/brooker.py b/src/lib389/lib389/brooker.py
index 932d9fc..18d7edd 100644
--- a/src/lib389/lib389/brooker.py
+++ b/src/lib389/lib389/brooker.py
@@ -622,14 +622,14 @@ class Replica(object):
- def add(self, suffix, binddn, bindpw=None, rtype=REPLICA_RDONLY_TYPE, rid=None,
tombstone_purgedelay=None, purgedelay=None, referrals=None, legacy=False):
+ def add(self, suffix, binddn, bindpw=None, role=None, rid=None,
tombstone_purgedelay=None, purgedelay=None, referrals=None, legacy=False):
"""Setup a replica entry on an existing suffix.
@param suffix - dn of suffix
@param binddn - the replication bind dn for this replica
can also be a list
["cn=r1,cn=config","cn=r2,cn=config"]
@param bindpw - used to eventually provision the replication entry
- @param rtype - REPLICA_RDWR_TYPE (master) or REPLICA_RDONLY_TYPE
(hub/consumer)
+ @param role - REPLICAROLE_MASTER, REPLICAROLE_HUB or REPLICAROLE_CONSUMER
@param rid - replica id or - if not given - an internal sequence number will
be assigned
# further args
@@ -646,12 +646,21 @@ class Replica(object):
binddn
TODO: this method does not update replica type
"""
- # set default values
- if rtype == MASTER_TYPE:
+ # Check validity of role
+ if not role:
+ self.log.fatal("Replica.create: replica role not specify
(REPLICAROLE_*)")
+ raise ValueError("role missing")
+
+ if role != REPLICAROLE_MASTER and role != REPLICAROLE_HUB and role !=
REPLICAROLE_CONSUMER:
+ self.log.fatal("enableReplication: replica role invalid (%s) " %
role)
+ raise ValueError("invalid role: %s" % role)
+
+ # role is fine, set the replica type
+ if role == REPLICAROLE_MASTER:
rtype = REPLICA_RDWR_TYPE
else:
rtype = REPLICA_RDONLY_TYPE
-
+
if legacy:
legacy = 'on'
else:
@@ -687,7 +696,7 @@ class Replica(object):
'nsds5replicalegacyconsumer': legacy,
'nsds5replicabinddn': binddnlist
})
- if rtype != LEAF_TYPE:
+ if role != REPLICAROLE_CONSUMER:
entry.setValues('nsds5flags', "1")
# other args
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.