diff options
author | Stuart Mackie <wsmackie@juniper.net> | 2016-10-07 12:24:58 -0700 |
---|---|---|
committer | Stuart Mackie <wsmackie@juniper.net> | 2016-10-07 12:24:58 -0700 |
commit | 4faa7f927149a5c4ef7a03523f7bc14523cb9baa (patch) | |
tree | 0be55aa0809cc395e45baeae63db660b4e72fe83 /charms/trusty/cassandra/hooks/coordinator.py | |
parent | 82f1a7eb5535b30a95b1e71ff18c315d40d1e6f0 (diff) |
Charms for Contrail 3.1 with Mitaka
Change-Id: Id37f3b9743d1974e31fcd7cd9c54be41bb0c47fb
Signed-off-by: Stuart Mackie <wsmackie@juniper.net>
Diffstat (limited to 'charms/trusty/cassandra/hooks/coordinator.py')
-rw-r--r-- | charms/trusty/cassandra/hooks/coordinator.py | 35 |
1 files changed, 35 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>. +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() |