mirror of
https://github.com/outbackdingo/patroni.git
synced 2026-08-26 15:40:21 +00:00
Merge pull request #123 from zalando/feature/api-context
Provide more context for healthchecks and monitoring.
This commit is contained in:
@@ -10,6 +10,7 @@ from patroni.ha import Ha
|
||||
from patroni.postgresql import Postgresql
|
||||
from patroni.utils import setup_signal_handlers, reap_children
|
||||
from patroni.zookeeper import ZooKeeper
|
||||
from .version import __version__
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -21,6 +22,7 @@ class Patroni:
|
||||
self.tags = config.get('tags', dict())
|
||||
self.postgresql = Postgresql(config['postgresql'])
|
||||
self.dcs = self.get_dcs(self.postgresql.name, config)
|
||||
self.version = __version__
|
||||
self.api = RestApiServer(self, config['restapi'])
|
||||
self.ha = Ha(self)
|
||||
self.next_run = time.time()
|
||||
|
||||
@@ -92,6 +92,7 @@ class RestApiHandler(BaseHTTPRequestHandler):
|
||||
def do_GET_patroni(self):
|
||||
response = self.get_postgresql_status(True)
|
||||
response.update(self.get_tags())
|
||||
response['patroni'] = {'version': self.server.patroni.version, 'scope': self.server.patroni.postgresql.scope}
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header('Content-Type', 'application/json')
|
||||
@@ -233,6 +234,7 @@ class RestApiHandler(BaseHTTPRequestHandler):
|
||||
'state': self.server.patroni.postgresql.state,
|
||||
'postmaster_start_time': row[0],
|
||||
'role': 'replica' if row[1] else 'master',
|
||||
'server_version': self.server.patroni.postgresql.server_version,
|
||||
'xlog': ({
|
||||
'received_location': row[3],
|
||||
'replayed_location': row[4],
|
||||
|
||||
@@ -133,6 +133,7 @@ class Postgresql:
|
||||
r = parseurl('postgres://{}/postgres'.format(self.local_address))
|
||||
self._connection = psycopg2.connect(**r)
|
||||
self._connection.autocommit = True
|
||||
self.server_version = self._connection.server_version
|
||||
return self._connection
|
||||
|
||||
def _cursor(self):
|
||||
|
||||
@@ -16,6 +16,8 @@ class MockPostgresql(Mock):
|
||||
name = 'test'
|
||||
state = 'running'
|
||||
role = 'master'
|
||||
server_version = '999999'
|
||||
scope = 'dummy'
|
||||
|
||||
def connection(self):
|
||||
return psycopg2_connect()
|
||||
@@ -51,6 +53,7 @@ class MockPatroni:
|
||||
ha = MockHa()
|
||||
dcs = Mock()
|
||||
tags = {}
|
||||
version = '0.00'
|
||||
|
||||
|
||||
class MockRequest:
|
||||
|
||||
@@ -40,6 +40,9 @@ class MockResponse:
|
||||
|
||||
class MockPostgresql(Mock):
|
||||
|
||||
server_version = '999999'
|
||||
scope = 'dummy'
|
||||
|
||||
def last_operation(self):
|
||||
return '0'
|
||||
|
||||
|
||||
@@ -48,6 +48,8 @@ class MockPostgresql(Mock):
|
||||
role = 'replica'
|
||||
state = 'running'
|
||||
connection_string = 'postgres://foo@bar/postgres'
|
||||
server_version = '999999'
|
||||
scope = 'dummy'
|
||||
|
||||
def is_healthy(self):
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user