From e151a9c6f7d7859881467a454bf4372e805912fc Mon Sep 17 00:00:00 2001 From: Federico Capoano Date: Thu, 4 Aug 2022 15:59:21 +0200 Subject: [PATCH] [fix] Fix creation of checks for existing devices #348 Fixes #348 --- .../check/migrations/0003_create_ping.py | 24 +------ .../migrations/0005_create_config_applied.py | 34 +--------- .../check/migrations/0007_create_checks.py | 62 +++++++++++++++++++ 3 files changed, 64 insertions(+), 56 deletions(-) create mode 100644 openwisp_monitoring/check/migrations/0007_create_checks.py diff --git a/openwisp_monitoring/check/migrations/0003_create_ping.py b/openwisp_monitoring/check/migrations/0003_create_ping.py index b1a2ef4a6..76e5d417b 100644 --- a/openwisp_monitoring/check/migrations/0003_create_ping.py +++ b/openwisp_monitoring/check/migrations/0003_create_ping.py @@ -1,32 +1,10 @@ -import swapper from django.db import migrations -from openwisp_monitoring.check.settings import AUTO_PING -from openwisp_monitoring.check.tasks import auto_create_ping - - -def create_device_ping(apps, schema_editor): - if AUTO_PING: - ContentType = apps.get_model('contenttypes', 'ContentType') - Check = apps.get_model('check', 'Check') - Device = apps.get_model('config', 'Device') - for device in Device.objects.all(): - auto_create_ping( - model=Device.__name__.lower(), - app_label=Device._meta.app_label, - object_id=str(device.pk), - check_model=Check, - content_type_model=ContentType, - ) - class Migration(migrations.Migration): dependencies = [ ('check', '0001_initial_squashed_0002_check_unique_together'), - swapper.dependency('monitoring', 'Metric'), ] - operations = [ - migrations.RunPython(create_device_ping, reverse_code=migrations.RunPython.noop) - ] + operations = [] diff --git a/openwisp_monitoring/check/migrations/0005_create_config_applied.py b/openwisp_monitoring/check/migrations/0005_create_config_applied.py index 2c64c40fa..8f6486c45 100644 --- a/openwisp_monitoring/check/migrations/0005_create_config_applied.py +++ b/openwisp_monitoring/check/migrations/0005_create_config_applied.py @@ -1,33 +1,5 @@ from django.db import migrations -from openwisp_monitoring.check.settings import AUTO_CONFIG_CHECK -from openwisp_monitoring.check.tasks import auto_create_config_check - - -def add_config_applied_checks(apps, schema_editor): - if not AUTO_CONFIG_CHECK: - return - ContentType = apps.get_model('contenttypes', 'ContentType') - Check = apps.get_model('check', 'Check') - Device = apps.get_model('config', 'Device') - for device in Device.objects.all(): - auto_create_config_check( - model=Device.__name__.lower(), - app_label=Device._meta.app_label, - object_id=str(device.pk), - check_model=Check, - content_type_model=ContentType, - ) - - -def remove_config_applied_checks(apps, schema_editor): - Check = apps.get_model('check', 'Check') - Metric = apps.get_model('monitoring', 'Metric') - Check.objects.filter( - check='openwisp_monitoring.check.classes.ConfigApplied' - ).delete() - Metric.objects.filter(configuration='config_applied').delete() - class Migration(migrations.Migration): @@ -35,8 +7,4 @@ class Migration(migrations.Migration): ('check', '0004_rename_active_to_is_active'), ] - operations = [ - migrations.RunPython( - add_config_applied_checks, reverse_code=remove_config_applied_checks - ) - ] + operations = [] diff --git a/openwisp_monitoring/check/migrations/0007_create_checks.py b/openwisp_monitoring/check/migrations/0007_create_checks.py new file mode 100644 index 000000000..b9cde2631 --- /dev/null +++ b/openwisp_monitoring/check/migrations/0007_create_checks.py @@ -0,0 +1,62 @@ +import swapper +from django.db import migrations + +from openwisp_monitoring.check.settings import AUTO_CONFIG_CHECK, AUTO_PING +from openwisp_monitoring.check.tasks import auto_create_config_check, auto_create_ping + + +def create_ping_checks(apps, schema_editor): + if AUTO_PING: + ContentType = apps.get_model('contenttypes', 'ContentType') + Check = apps.get_model('check', 'Check') + Device = apps.get_model('config', 'Device') + for device in Device.objects.all(): + auto_create_ping( + model=Device.__name__.lower(), + app_label=Device._meta.app_label, + object_id=str(device.pk), + check_model=Check, + content_type_model=ContentType, + ) + + +def create_config_applied_checks(apps, schema_editor): + if not AUTO_CONFIG_CHECK: + return + ContentType = apps.get_model('contenttypes', 'ContentType') + Check = apps.get_model('check', 'Check') + Device = apps.get_model('config', 'Device') + for device in Device.objects.all(): + auto_create_config_check( + model=Device.__name__.lower(), + app_label=Device._meta.app_label, + object_id=str(device.pk), + check_model=Check, + content_type_model=ContentType, + ) + + +def remove_config_applied_checks(apps, schema_editor): + Check = apps.get_model('check', 'Check') + Metric = apps.get_model('monitoring', 'Metric') + Check.objects.filter( + check='openwisp_monitoring.check.classes.ConfigApplied' + ).delete() + Metric.objects.filter(configuration='config_applied').delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('check', '0006_rename_check_check_check_type'), + swapper.dependency('monitoring', 'Metric'), + ] + + operations = [ + migrations.RunPython( + create_ping_checks, reverse_code=migrations.RunPython.noop + ), + migrations.RunPython( + create_config_applied_checks, reverse_code=remove_config_applied_checks + ), + ]