OSMENG-1095 VDU Terminate WF
[osm/common.git] / osm_common / temporal / workflows / vdu.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.dataclasses_common import CharmInfo, VduComputeConstraints
22 from osm_common.temporal.workflows.base import BaseWorkflow
23
24
25 class VduInstantiateWorkflow(BaseWorkflow):
26 """Instantiate a VDU"""
27
28 @dataclass
29 class Input:
30 """
31 Input dataclass for workflow that instantiates a VDU.
32
33 vim_uuid: str
34
35 model_name: str
36
37 charm_info : CharmInfo
38
39 constraints: VduComputeConstraints
40
41 cloud: VIM cloud type
42
43 config: Config details of application
44 """
45
46 vim_uuid: str
47 model_name: str
48 charm_info: CharmInfo
49 constraints: VduComputeConstraints
50 cloud: str
51 config: dict
52
53 @abstractmethod
54 async def run(self, workflow_input: Input) -> None:
55 pass
56
57
58 class VduTerminateWorkflow(BaseWorkflow):
59 """Terminate a VDU"""
60
61 @dataclass
62 class Input:
63 """
64 Input dataclass for workflow that terminates a VDU.
65
66 vim_uuid: str
67 The UUID of the VIM as stored in the OSM vim_accounts
68 collection in Mongo.
69
70 model_name: str
71 Name of the model in Juju where the charm to be removed.
72
73 application_name: str
74 Name of the application whose removal is going to be
75 awaited.
76 """
77
78 vim_uuid: str
79 model_name: str
80 application_name: str
81
82 @abstractmethod
83 async def run(self, workflow_input: Input) -> None:
84 pass