Tuesday, June 6, 2017

[389-commits] [lib389] 03/03: Ticket 65 - Add m2c2 topology

This is an automated email from the git hooks/post-receive script.

spichugi pushed a commit to branch master
in repository lib389.

commit 46ef071706f88390fa8a7929e693ee096cf2e02b
Author: Sankar Ramalingam <sramling@redhat.com>
Date: Tue Jun 6 17:13:42 2017 +0530

Ticket 65 - Add m2c2 topology

Bug Description: Replication topology for two master and two consumers
is not available.

Fix Description: Add m2c2 replication topology.

https://pagure.io/lib389/issue/65

Author: Sankar Ramalingam

Reviewed by: spichugi

Signed-off-by: Simon Pichugin <spichugi@redhat.com>
---
lib389/topologies.py | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 197 insertions(+)

diff --git a/lib389/topologies.py b/lib389/topologies.py
index 9b2258a..19d121d 100644
--- a/lib389/topologies.py
+++ b/lib389/topologies.py
@@ -984,3 +984,200 @@ def topology_m4(request):
"master4": master4, "master4_agmts": {"m4_m1": m4_m1_agmt,
"m4_m2": m4_m2_agmt,
"m4_m3": m4_m3_agmt}})
+
+
+@pytest.fixture(scope="module")
+def topology_m2c2(request):
+ """Create Replication Deployment with two masters and two consumers"""
+
+ # Creating master 1...
+ if DEBUGGING:
+ master1 = DirSrv(verbose=True)
+ else:
+ master1 = DirSrv(verbose=False)
+ args_instance[SER_HOST] = HOST_MASTER_1
+ args_instance[SER_PORT] = PORT_MASTER_1
+ args_instance[SER_SERVERID_PROP] = SERVERID_MASTER_1
+ args_instance[SER_CREATION_SUFFIX] = DEFAULT_SUFFIX
+ args_master = args_instance.copy()
+ master1.allocate(args_master)
+ instance_master1 = master1.exists()
+ if instance_master1:
+ master1.delete()
+ master1.create()
+ master1.open()
+ master1.replica.enableReplication(suffix=SUFFIX, role=REPLICAROLE_MASTER, replicaId=REPLICAID_MASTER_1)
+
+ # Creating master 2...
+ if DEBUGGING:
+ master2 = DirSrv(verbose=True)
+ else:
+ master2 = DirSrv(verbose=False)
+ args_instance[SER_HOST] = HOST_MASTER_2
+ args_instance[SER_PORT] = PORT_MASTER_2
+ args_instance[SER_SERVERID_PROP] = SERVERID_MASTER_2
+ args_instance[SER_CREATION_SUFFIX] = DEFAULT_SUFFIX
+ args_master = args_instance.copy()
+ master2.allocate(args_master)
+ instance_master2 = master2.exists()
+ if instance_master2:
+ master2.delete()
+ master2.create()
+ master2.open()
+ master2.replica.enableReplication(suffix=SUFFIX, role=REPLICAROLE_MASTER, replicaId=REPLICAID_MASTER_2)
+
+ # Creating consumer 1...
+ if DEBUGGING:
+ consumer1 = DirSrv(verbose=True)
+ else:
+ consumer1 = DirSrv(verbose=False)
+ args_instance[SER_HOST] = HOST_CONSUMER_1
+ args_instance[SER_PORT] = PORT_CONSUMER_1
+ args_instance[SER_SERVERID_PROP] = SERVERID_CONSUMER_1
+ args_instance[SER_CREATION_SUFFIX] = DEFAULT_SUFFIX
+ args_consumer = args_instance.copy()
+ consumer1.allocate(args_consumer)
+ instance_consumer1 = consumer1.exists()
+ if instance_consumer1:
+ consumer1.delete()
+ consumer1.create()
+ consumer1.open()
+ consumer1.replica.enableReplication(suffix=SUFFIX, role=REPLICAROLE_CONSUMER, replicaId=CONSUMER_REPLICAID)
+
+ # Creating consumer 2...
+ if DEBUGGING:
+ consumer2 = DirSrv(verbose=True)
+ else:
+ consumer2 = DirSrv(verbose=False)
+ args_instance[SER_HOST] = HOST_CONSUMER_2
+ args_instance[SER_PORT] = PORT_CONSUMER_2
+ args_instance[SER_SERVERID_PROP] = SERVERID_CONSUMER_2
+ args_instance[SER_CREATION_SUFFIX] = DEFAULT_SUFFIX
+ args_consumer = args_instance.copy()
+ consumer2.allocate(args_consumer)
+ instance_consumer2 = consumer2.exists()
+ if instance_consumer2:
+ consumer2.delete()
+ consumer2.create()
+ consumer2.open()
+ consumer2.replica.enableReplication(suffix=SUFFIX, role=REPLICAROLE_CONSUMER, replicaId=CONSUMER_REPLICAID)
+
+ def fin():
+ if DEBUGGING:
+ master1.stop()
+ master2.stop()
+ consumer1.stop()
+ consumer2.stop()
+ else:
+ master1.delete()
+ master2.delete()
+ consumer1.delete()
+ consumer2.delete()
+
+ request.addfinalizer(fin)
+
+ # Create all the agreements
+ # Creating agreement from master 1 to master 2
+ properties = {RA_NAME: 'meTo_' + master2.host + ':' + str(master2.port),
+ RA_BINDDN: defaultProperties[REPLICATION_BIND_DN],
+ RA_BINDPW: defaultProperties[REPLICATION_BIND_PW],
+ RA_METHOD: defaultProperties[REPLICATION_BIND_METHOD],
+ RA_TRANSPORT_PROT: defaultProperties[REPLICATION_TRANSPORT]}
+ m1_m2_agmt = master1.agreement.create(suffix=SUFFIX, host=master2.host, port=master2.port, properties=properties)
+ if not m1_m2_agmt:
+ log.fatal("Fail to create a master -> master replica agreement")
+ sys.exit(1)
+ log.debug("%s created" % m1_m2_agmt)
+
+ # Creating agreement from master 2 to master 1
+ properties = {RA_NAME: 'meTo_' + master1.host + ':' + str(master1.port),
+ RA_BINDDN: defaultProperties[REPLICATION_BIND_DN],
+ RA_BINDPW: defaultProperties[REPLICATION_BIND_PW],
+ RA_METHOD: defaultProperties[REPLICATION_BIND_METHOD],
+ RA_TRANSPORT_PROT: defaultProperties[REPLICATION_TRANSPORT]}
+ m2_m1_agmt = master2.agreement.create(suffix=SUFFIX, host=master1.host, port=master1.port, properties=properties)
+ if not m2_m1_agmt:
+ log.fatal("Fail to create a master -> master replica agreement")
+ sys.exit(1)
+ log.debug("%s created" % m2_m1_agmt)
+
+ # Creating agreement from master 1 to consumer 1
+ properties = {RA_NAME: 'meTo_' + consumer1.host + ':' + str(consumer1.port),
+ RA_BINDDN: defaultProperties[REPLICATION_BIND_DN],
+ RA_BINDPW: defaultProperties[REPLICATION_BIND_PW],
+ RA_METHOD: defaultProperties[REPLICATION_BIND_METHOD],
+ RA_TRANSPORT_PROT: defaultProperties[REPLICATION_TRANSPORT]}
+ m1_c1_agmt = master1.agreement.create(suffix=SUFFIX, host=consumer1.host, port=consumer1.port,
+ properties=properties)
+ if not m1_c1_agmt:
+ log.fatal("Fail to create a hub -> consumer replica agreement")
+ sys.exit(1)
+ log.debug("%s created" % m1_c1_agmt)
+
+ # Creating agreement from master 1 to consumer 2
+ properties = {RA_NAME: 'meTo_' + consumer2.host + ':' + str(consumer2.port),
+ RA_BINDDN: defaultProperties[REPLICATION_BIND_DN],
+ RA_BINDPW: defaultProperties[REPLICATION_BIND_PW],
+ RA_METHOD: defaultProperties[REPLICATION_BIND_METHOD],
+ RA_TRANSPORT_PROT: defaultProperties[REPLICATION_TRANSPORT]}
+ m1_c2_agmt = master1.agreement.create(suffix=SUFFIX, host=consumer2.host, port=consumer2.port,
+ properties=properties)
+ if not m1_c2_agmt:
+ log.fatal("Fail to create a hub -> consumer replica agreement")
+ sys.exit(1)
+ log.debug("%s created" % m1_c2_agmt)
+
+ # Creating agreement from master 2 to consumer 1
+ properties = {RA_NAME: 'meTo_' + consumer1.host + ':' + str(consumer1.port),
+ RA_BINDDN: defaultProperties[REPLICATION_BIND_DN],
+ RA_BINDPW: defaultProperties[REPLICATION_BIND_PW],
+ RA_METHOD: defaultProperties[REPLICATION_BIND_METHOD],
+ RA_TRANSPORT_PROT: defaultProperties[REPLICATION_TRANSPORT]}
+ m2_c1_agmt = master2.agreement.create(suffix=SUFFIX, host=consumer1.host, port=consumer1.port,
+ properties=properties)
+ if not m2_c1_agmt:
+ log.fatal("Fail to create a hub -> consumer replica agreement")
+ sys.exit(1)
+ log.debug("%s created" % m2_c1_agmt)
+
+ # Creating agreement from master 2 to consumer 2
+ properties = {RA_NAME: 'meTo_' + consumer2.host + ':' + str(consumer2.port),
+ RA_BINDDN: defaultProperties[REPLICATION_BIND_DN],
+ RA_BINDPW: defaultProperties[REPLICATION_BIND_PW],
+ RA_METHOD: defaultProperties[REPLICATION_BIND_METHOD],
+ RA_TRANSPORT_PROT: defaultProperties[REPLICATION_TRANSPORT]}
+ m2_c2_agmt = master2.agreement.create(suffix=SUFFIX, host=consumer2.host, port=consumer2.port,
+ properties=properties)
+ if not m2_c2_agmt:
+ log.fatal("Fail to create a hub -> consumer replica agreement")
+ sys.exit(1)
+ log.debug("%s created" % m2_c2_agmt)
+
+ # Allow the replicas to get situated with the new agreements...
+ time.sleep(5)
+
+ # Initialize all the agreements
+ master1.agreement.init(SUFFIX, HOST_MASTER_2, PORT_MASTER_2)
+ master1.waitForReplInit(m1_m2_agmt)
+ master1.agreement.init(SUFFIX, HOST_CONSUMER_1, PORT_CONSUMER_1)
+ master1.waitForReplInit(m1_c1_agmt)
+ master1.agreement.init(SUFFIX, HOST_CONSUMER_2, PORT_CONSUMER_2)
+ master1.waitForReplInit(m1_c2_agmt)
+
+ # Check replication is working...
+ if master1.testReplication(DEFAULT_SUFFIX, consumer1):
+ log.info('Replication is working.')
+ else:
+ log.fatal('Replication is not working.')
+ assert False
+
+ # Clear out the tmp dir
+ master1.clearTmpDir(__file__)
+
+ return TopologyMain(masters={"master1": master1, "master1_agmts": {"m1_m2": m1_m2_agmt,
+ "m1_c1": m1_c1_agmt,
+ "m1_c2": m1_c2_agmt},
+ "master2": master2, "master2_agmts": {"m2_m1": m2_m1_agmt,
+ "m2_c1": m2_c1_agmt,
+ "m2_c2": m2_c2_agmt}},
+ consumers={"consumer1": consumer1, "consumer2": consumer2})

--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
389-commits mailing list -- 389-commits@lists.fedoraproject.org
To unsubscribe send an email to 389-commits-leave@lists.fedoraproject.org

No comments:

Post a Comment