Fix Cassandra cluster restart

Look the node up by both '127.0.0.1' and the private IP (if not found).

Change-Id: Iddd76e6abc5d4ecc68cbd53c554ea994c51db115
This commit is contained in:
Petr Malik 2016-11-14 17:52:30 -05:00
parent e8686f1d24
commit 2777785481

View File

@ -766,8 +766,8 @@ class CassandraAppStatus(service.BaseDbStatus):
def _get_actual_db_status(self):
try:
self.client.execute('SELECT now() FROM system.local;')
return rd_instance.ServiceStatuses.RUNNING
if self.client.local_node_is_up():
return rd_instance.ServiceStatuses.RUNNING
except NoHostAvailable:
return rd_instance.ServiceStatuses.SHUTDOWN
except Exception:
@ -1238,6 +1238,20 @@ class CassandraConnection(object):
return query.format(*identifiers)
return query
def node_is_up(self, host_ip):
"""Test whether the Cassandra node located at the given IP is up.
"""
for host in self._cluster.metadata.all_hosts():
if host.address == host_ip:
return host.is_up
return False
def local_node_is_up(self):
"""Test whether Cassandra is up on the localhost.
"""
return (self.node_is_up('127.0.0.1') or
self.node_is_up(netutils.get_my_ipv4()))
def _connect(self):
if not self._cluster.is_shutdown:
LOG.debug("Connecting to a Cassandra cluster as '%s'."