Skip to content
Snippets Groups Projects
Commit 6204b7e4 authored by Manon Blanco's avatar Manon Blanco
Browse files

Migrate existing configurations towards WorkerConfiguration

parent ce6ec512
No related branches found
No related tags found
No related merge requests found
# Generated by Django 3.2.5 on 2021-11-04 08:14
import json
from hashlib import md5
from django.db import migrations
def build_hash_configuration(configuration):
configuration_json = json.dumps(configuration, sort_keys=True).encode('utf-8')
return md5(configuration_json).hexdigest()
def use_worker_configuration(apps, schema_editor):
WorkerRun = apps.get_model('dataimport', 'WorkerRun')
WorkerConfiguration = apps.get_model('dataimport', 'WorkerConfiguration')
for index, worker_run in enumerate(WorkerRun.objects.filter(configuration__isnull=True).exclude(old_configuration={})):
worker = worker_run.version.worker
worker_configuration, _ = WorkerConfiguration.objects.get_or_create(
worker=worker,
configuration=worker_run.old_configuration,
defaults={
'name': f'config n°{index} - {worker.name}',
'configuration_hash': build_hash_configuration(worker_run.old_configuration)
}
)
worker_run.configuration = worker_configuration
worker_run.save()
def use_old_configuration(apps, schema_editor):
WorkerRun = apps.get_model('dataimport', 'WorkerRun')
worker_runs = WorkerRun.objects.filter(configuration__isnull=False)
for worker_run in worker_runs:
worker_run.old_configuration = worker_run.configuration.configuration
WorkerRun.objects.bulk_update(worker_runs, ['old_configuration'])
class Migration(migrations.Migration):
dependencies = [
('dataimport', '0039_worker_configuration'),
]
operations = [
migrations.RunPython(
use_worker_configuration,
reverse_code=use_old_configuration,
elidable=True,
),
]
# Generated by Django 3.2.5 on 2021-11-04 08:14
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('dataimport', '0040_use_worker_configuration'),
]
operations = [
migrations.RemoveConstraint(
model_name='workerrun',
name='worker_run_old_configuration_objects',
),
migrations.RemoveField(
model_name='workerrun',
name='old_configuration',
),
]
......@@ -629,7 +629,6 @@ class WorkerRun(models.Model):
dataimport = models.ForeignKey('dataimport.DataImport', on_delete=models.CASCADE, related_name='worker_runs')
version = models.ForeignKey('dataimport.WorkerVersion', on_delete=models.CASCADE, related_name='worker_runs')
parents = ArrayField(models.UUIDField())
old_configuration = models.JSONField(default=dict)
configuration = models.ForeignKey(
WorkerConfiguration,
related_name='worker_runs',
......@@ -640,12 +639,6 @@ class WorkerRun(models.Model):
class Meta:
unique_together = (('version', 'dataimport'),)
constraints = [
models.CheckConstraint(
check=models.Q(old_configuration__typeof='object'),
name='worker_run_old_configuration_objects',
)
]
def build_task_recipe(self, import_task_name, elements_path, chunk=None, workflow_runs=None):
'''
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment