OSMENG-1155 Implementation of Constants and Dataclasses
[osm/common.git] / osm_common / temporal / workflows / vim.py
1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
17
18 from abc import abstractmethod
19 from dataclasses import dataclass
20
21 from osm_common.temporal.workflows.base import BaseWorkflow
22
23
24 class VimCreateWorkflow(BaseWorkflow):
25 """Creates VIM account by validating the VIM connectivity."""
26
27 @dataclass
28 class Input:
29 """
30 Input dataclass for workflows that perform operations
31 (create, update, delete) on VIMs.
32
33 Attributes:
34 -----------
35 vim_uuid : str
36 The UUID of the VIM account as stored in the OSM vim
37 collection in Mongo
38
39 op_id: str
40 The operation (task) id for this workflow. This is used
41 by the workflow at the end to update the status of the
42 operation in Mongo vim collection.
43 """
44
45 vim_uuid: str
46 op_id: str
47
48 @abstractmethod
49 async def run(self, workflow_input: Input) -> None:
50 pass
51
52
53 class VimUpdateWorkflow(VimCreateWorkflow):
54 """Updates VIM account state by validating the VIM connectivity."""
55
56 @dataclass
57 class Input:
58 """
59 Input dataclass for workflows that perform operations
60 (create, update, delete) on VIMs.
61
62 Attributes:
63 -----------
64 vim_uuid : str
65 The UUID of the VIM account as stored in the OSM vim
66 collection in Mongo
67
68 op_id: str
69 The operation (task) id for this workflow. This is used
70 by the workflow at the end to update the status of the
71 operation in Mongo vim collection.
72 """
73
74 vim_uuid: str
75 op_id: str
76
77 @abstractmethod
78 async def run(self, workflow_input: Input) -> None:
79 pass
80
81
82 class VimDeleteWorkflow(BaseWorkflow):
83 """Deletes VIM accounts."""
84
85 @dataclass
86 class Input:
87 """
88 Input dataclass for workflows that perform operations
89 (create, update, delete) on VIMs.
90
91 Attributes:
92 -----------
93 vim_uuid : str
94 The UUID of the VIM account as stored in the OSM vim
95 collection in Mongo
96
97 op_id: str
98 The operation (task) id for this workflow. This is used
99 by the workflow at the end to update the status of the
100 operation in Mongo vim collection.
101 """
102
103 vim_uuid: str
104 op_id: str
105
106 @abstractmethod
107 async def run(self, workflow_input: Input) -> None:
108 pass