Skip to content

Commit

Permalink
Fix compatibility with pre-3.18 custom check backends (#414)
Browse files Browse the repository at this point in the history
The `subset` parameter added to `BaseHealthCheckBackend`'s `run_check`
and `check_status` methods in 4da1fd9 broke compatibility with existing custom
check backends, since they don't accept this parameter.

Moreover, this parameter appears to be entirely useless, since `check_status` is
only called by `run_check`, and `run_check` is only called by
`CheckMixin.run_check`, which never passed a value for `subset`.

Get rid of it and restore compatibility.
  • Loading branch information
SpecLad committed Jan 31, 2024
1 parent 78d08eb commit 4d04b5a
Show file tree
Hide file tree
Showing 14 changed files with 36 additions and 36 deletions.
6 changes: 3 additions & 3 deletions health_check/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ class BaseHealthCheckBackend:
def __init__(self):
self.errors = []

def check_status(self, subset=None):
def check_status(self):
raise NotImplementedError

def run_check(self, subset=None):
def run_check(self):
start = timer()
self.errors = []
try:
self.check_status(subset=subset)
self.check_status()
except HealthCheckException as e:
self.add_error(e, e)
except BaseException:
Expand Down
2 changes: 1 addition & 1 deletion health_check/cache/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def __init__(self, backend="default"):
def identifier(self):
return f"Cache backend: {self.backend}"

def check_status(self, subset=None):
def check_status(self):
cache = caches[self.backend]

try:
Expand Down
2 changes: 1 addition & 1 deletion health_check/contrib/celery/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@


class CeleryHealthCheck(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
timeout = getattr(settings, "HEALTHCHECK_CELERY_TIMEOUT", 3)
result_timeout = getattr(settings, "HEALTHCHECK_CELERY_RESULT_TIMEOUT", timeout)
queue_timeout = getattr(settings, "HEALTHCHECK_CELERY_QUEUE_TIMEOUT", timeout)
Expand Down
2 changes: 1 addition & 1 deletion health_check/contrib/celery_ping/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
class CeleryPingHealthCheck(BaseHealthCheckBackend):
CORRECT_PING_RESPONSE = {"ok": "pong"}

def check_status(self, subset=None):
def check_status(self):
timeout = getattr(settings, "HEALTHCHECK_CELERY_PING_TIMEOUT", 1)

try:
Expand Down
2 changes: 1 addition & 1 deletion health_check/contrib/migrations/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class MigrationsHealthCheck(BaseHealthCheckBackend):
def get_migration_plan(self, executor):
return executor.migration_plan(executor.loader.graph.leaf_nodes())

def check_status(self, subset=None):
def check_status(self):
db_alias = getattr(settings, "HEALTHCHECK_MIGRATIONS_DB", DEFAULT_DB_ALIAS)
try:
executor = MigrationExecutor(connections[db_alias])
Expand Down
4 changes: 2 additions & 2 deletions health_check/contrib/psutil/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@


class DiskUsage(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
try:
du = psutil.disk_usage("/")
if DISK_USAGE_MAX and du.percent >= DISK_USAGE_MAX:
Expand All @@ -28,7 +28,7 @@ def check_status(self, subset=None):


class MemoryUsage(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
try:
memory = psutil.virtual_memory()
if MEMORY_MIN and memory.available < (MEMORY_MIN * 1024 * 1024):
Expand Down
2 changes: 1 addition & 1 deletion health_check/contrib/rabbitmq/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class RabbitMQHealthCheck(BaseHealthCheckBackend):

namespace = None

def check_status(self, subset=None):
def check_status(self):
"""Check RabbitMQ service by opening and closing a broker channel."""
logger.debug("Checking for a broker_url on django settings...")

Expand Down
2 changes: 1 addition & 1 deletion health_check/contrib/redis/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class RedisHealthCheck(BaseHealthCheckBackend):

redis_url = getattr(settings, "REDIS_URL", "redis://localhost/1")

def check_status(self, subset=None):
def check_status(self):
"""Check Redis service by pinging the redis instance with a redis connection."""
logger.debug("Got %s as the redis_url. Connecting to redis...", self.redis_url)

Expand Down
2 changes: 1 addition & 1 deletion health_check/db/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@


class DatabaseBackend(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
try:
obj = TestModel.objects.create(title="test")
obj.title = "newtest"
Expand Down
2 changes: 1 addition & 1 deletion health_check/storage/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def check_delete(self, file_name):
if storage.exists(file_name):
raise ServiceUnavailable("File was not deleted")

def check_status(self, subset=None):
def check_status(self):
try:
# write the file to the storage backend
file_name = self.get_file_name()
Expand Down
4 changes: 2 additions & 2 deletions tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@


class FailPlugin(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
self.add_error("Oops")


class OkPlugin(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
pass


Expand Down
4 changes: 2 additions & 2 deletions tests/test_mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@


class FailPlugin(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
self.add_error("Oops")


class OkPlugin(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
pass


Expand Down
4 changes: 2 additions & 2 deletions tests/test_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@


class FakePlugin(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
pass


class Plugin(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
pass


Expand Down
34 changes: 17 additions & 17 deletions tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def test_success(self, client):

def test_error(self, client):
class MyBackend(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
self.add_error("Super Fail!")

plugin_dir.reset()
Expand All @@ -104,7 +104,7 @@ def check_status(self, subset=None):

def test_warning(self, client):
class MyBackend(BaseHealthCheckBackend):
def check_status(self, subset=None):
def check_status(self):
raise ServiceWarning("so so")

plugin_dir.reset()
Expand All @@ -124,7 +124,7 @@ def test_non_critical(self, client):
class MyBackend(BaseHealthCheckBackend):
critical_service = False

def check_status(self, subset=None):
def check_status(self):
self.add_error("Super Fail!")

plugin_dir.reset()
Expand All @@ -136,7 +136,7 @@ def check_status(self, subset=None):

def test_success_accept_json(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -147,7 +147,7 @@ def run_check(self, subset=None):

def test_success_prefer_json(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -160,7 +160,7 @@ def run_check(self, subset=None):

def test_success_accept_xhtml(self, client):
class SuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -171,7 +171,7 @@ def run_check(self, subset=None):

def test_success_unsupported_accept(self, client):
class SuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -186,7 +186,7 @@ def run_check(self, subset=None):

def test_success_unsupported_and_supported_accept(self, client):
class SuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -199,7 +199,7 @@ def run_check(self, subset=None):

def test_success_accept_order(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -213,7 +213,7 @@ def run_check(self, subset=None):

def test_success_accept_order__reverse(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -227,7 +227,7 @@ def run_check(self, subset=None):

def test_format_override(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -238,7 +238,7 @@ def run_check(self, subset=None):

def test_format_no_accept_header(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -249,7 +249,7 @@ def run_check(self, subset=None):

def test_error_accept_json(self, client):
class JSONErrorBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
self.add_error("JSON Error")

plugin_dir.reset()
Expand All @@ -266,7 +266,7 @@ def run_check(self, subset=None):

def test_success_param_json(self, client):
class JSONSuccessBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand All @@ -280,11 +280,11 @@ def run_check(self, subset=None):

def test_success_subset_define(self, client):
class SuccessOneBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

class SuccessTwoBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
pass

plugin_dir.reset()
Expand Down Expand Up @@ -328,7 +328,7 @@ def test_error_subset_not_found(self, client):

def test_error_param_json(self, client):
class JSONErrorBackend(BaseHealthCheckBackend):
def run_check(self, subset=None):
def run_check(self):
self.add_error("JSON Error")

plugin_dir.reset()
Expand Down

0 comments on commit 4d04b5a

Please sign in to comment.