local_tasks.py 1.96 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
#
# This file is part of CIRCLE Cloud.
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE.  If not, see <http://www.gnu.org/licenses/>.

18
from celery.contrib.abortable import AbortableTask
19
from manager.mancelery import celery
Guba Sándor committed
20

21

22 23 24
@celery.task(base=AbortableTask, bind=True)
def abortable_async_instance_operation(task, operation_id, instance_pk,
                                       activity_pk, allargs, auxargs):
25 26 27 28 29 30
    from vm.models import Instance, InstanceActivity
    instance = Instance.objects.get(pk=instance_pk)
    operation = getattr(instance, operation_id)
    activity = InstanceActivity.objects.get(pk=activity_pk)

    # save async task UUID to activity
31
    activity.task_uuid = task.request.id
32 33
    activity.save()

34
    allargs['activity'] = activity
35
    allargs['task'] = task
36

37
    return operation._exec_op(allargs, auxargs)
38 39


40 41 42
@celery.task(base=AbortableTask, bind=True)
def abortable_async_node_operation(task, operation_id, node_pk, activity_pk,
                                   allargs, auxargs):
43 44 45 46 47 48
    from vm.models import Node, NodeActivity
    node = Node.objects.get(pk=node_pk)
    operation = getattr(node, operation_id)
    activity = NodeActivity.objects.get(pk=activity_pk)

    # save async task UUID to activity
49
    activity.task_uuid = task.request.id
50 51
    activity.save()

52
    allargs['activity'] = activity
53
    allargs['task'] = task
54 55

    return operation._exec_op(allargs, auxargs)