File size: 1,796 Bytes
e30e9ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# =====================================================
# Apckeyl Framework
# Version 1.0
# compute_provider_executor.py
# =====================================================

"""
Compute Provider Executor.

Version 1.0
"""


class ComputeProviderExecutor:

    def __init__(self, manager):

        if manager is None:

            raise ValueError(
                "Manager is required"
            )

        self.manager = manager


    # =================================================
    # Execute Task
    # =================================================

    def execute(self, task):

        if task is None:

            return {
                "task_id": None,
                "status": "error",
                "result": None,
                "error": "Task is required",
            }

        task_type = task.get(
            "task_type"
        )

        if not task_type:

            return {
                "task_id": task.get(
                    "task_id"
                ),
                "status": "error",
                "result": None,
                "error": "Missing task_type",
            }

        provider = (
            self.manager.select_provider(
                task_type
            )
        )

        if provider is None:

            return {
                "task_id": task.get(
                    "task_id"
                ),
                "status": "error",
                "result": None,
                "error": (
                    "No provider available "
                    f"for task type: {task_type}"
                ),
            }

        return provider.execute(
            task
        )


# =====================================================
# End of File
# =====================================================