From 4faa7f927149a5c4ef7a03523f7bc14523cb9baa Mon Sep 17 00:00:00 2001 From: Stuart Mackie Date: Fri, 7 Oct 2016 12:24:58 -0700 Subject: Charms for Contrail 3.1 with Mitaka Change-Id: Id37f3b9743d1974e31fcd7cd9c54be41bb0c47fb Signed-off-by: Stuart Mackie --- charms/trusty/cassandra/hooks/coordinator.py | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 charms/trusty/cassandra/hooks/coordinator.py (limited to 'charms/trusty/cassandra/hooks/coordinator.py') diff --git a/charms/trusty/cassandra/hooks/coordinator.py b/charms/trusty/cassandra/hooks/coordinator.py new file mode 100644 index 0000000..c353671 --- /dev/null +++ b/charms/trusty/cassandra/hooks/coordinator.py @@ -0,0 +1,35 @@ +# Copyright 2015 Canonical Ltd. +# +# This file is part of the Cassandra Charm for Juju. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranties of +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +from charmhelpers.coordinator import BaseCoordinator + + +class CassandraCoordinator(BaseCoordinator): + def default_grant(self, lock, unit, granted, queue): + '''Grant locks to only one unit at a time, regardless of its name. + + This lets us keep separate locks like repair and restart, + while ensuring the operations do not occur on different nodes + at the same time. + ''' + # Return True if this unit has already been granted a lock. + if self.grants.get(unit): + return True + + # Otherwise, return True if the unit is first in the queue. + return queue[0] == unit and not granted + + +coordinator = CassandraCoordinator() -- cgit 1.2.3-korg