Skip to content

Commit 276e299

Browse files
committed
Adopt new bind=True kwarg
1 parent 50e08c6 commit 276e299

File tree

3 files changed

+34
-9
lines changed

3 files changed

+34
-9
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 4.2.16 on 2025-02-18 18:13
2+
3+
from django.db import migrations, models
4+
import uuid
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('dab_tas', '0001_initial'),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name='task',
16+
name='wrapper_uuid',
17+
field=models.UUIDField(default=None, editable=False, help_text='Adopted UUID of DAB task app wrapper, attached when background service starts task', null=True),
18+
),
19+
migrations.AlterField(
20+
model_name='task',
21+
name='uuid',
22+
field=models.UUIDField(default=uuid.uuid4, editable=False, help_text='Original dispatcher UUID generated at time of task publishing', primary_key=True, serialize=False),
23+
),
24+
]

ansible_base/task/models.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class Task(models.Model):
2424
Loosely modeled after pulpcore.Task
2525
"""
2626

27-
uuid = models.UUIDField(primary_key=True, default=uuid4, editable=False, help_text=_('UUID that corresponds to the dispatcher task uuid'))
27+
uuid = models.UUIDField(primary_key=True, default=uuid4, editable=False, help_text=_('Original dispatcher UUID generated at time of task publishing'))
28+
wrapper_uuid = models.UUIDField(null=True, default=None, editable=False, help_text=_('Adopted UUID of DAB task app wrapper, attached when background service starts task'))
2829
state = models.CharField(
2930
choices=[(s, s.title()) for s in sorted(vars(TASK_STATES).values())],
3031
default=TASK_STATES.WAITING,
@@ -40,11 +41,6 @@ class Task(models.Model):
4041
started_at = models.DateTimeField(null=True, help_text=_('Time of acknowledgement, also approximately the time the task starts'))
4142
finished_at = models.DateTimeField(null=True, help_text=_('Time task is cleared (whether failed or succeeded), may be unused if set to auto-delete'))
4243

43-
def mark_ack(self):
44-
self.state = TASK_STATES.RUNNING
45-
self.started_at = now()
46-
self.save(update_fields=['state', 'started_at'])
47-
4844
def mark_completed(self):
4945
self.state = TASK_STATES.COMPLETED
5046
self.finished_at = now()

ansible_base/task/tasks.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,24 @@
22

33
from dispatcher.utils import resolve_callable
44
from dispatcher.publish import task
5+
56
from django.db import transaction
7+
from django.utils.timezone import now
68

79
from ansible_base.task.models import TASK_STATES, Task
810

911
logger = logging.getLogger(__name__)
1012

1113

12-
@task(queue='dab_broadcast')
13-
def run_task_from_queue():
14+
@task(queue='dab_broadcast', bind=True)
15+
def run_task_from_queue(dispatcher):
1416
with transaction.atomic():
1517
task = Task.objects.filter(state=TASK_STATES.WAITING).select_for_update().first()
1618
if task:
17-
task.mark_ack()
19+
task.state = TASK_STATES.RUNNING
20+
task.started_at = now()
21+
task.wrapper_uuid = dispatcher.uuid
22+
task.save(update_fields=['state', 'started_at', 'wrapper_uuid'])
1823
else:
1924
return
2025

0 commit comments

Comments
 (0)