diff options
author | Stuart Mackie <wsmackie@juniper.net> | 2016-11-22 14:00:39 -0800 |
---|---|---|
committer | Stuart Mackie <wsmackie@juniper.net> | 2016-11-22 14:00:39 -0800 |
commit | 5de4c9f0c126b984da72128a3ca084eda6b4087a (patch) | |
tree | 0be55aa0809cc395e45baeae63db660b4e72fe83 /charms/trusty/cassandra/hooks/coordinator.py | |
parent | f02da72993eb8e5a34ed049bad442c6d6db4701a (diff) |
Add local cassandra charm from Tony Liu's machine
Change-Id: I56478233f7498861f95a0c12be983f9a1307853e
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() |