Add nfdeployment handlers
[pti/o2.git] / o2dms / domain / dms.py
1 # Copyright (C) 2021 Wind River Systems, Inc.\r
2 #\r
3 #  Licensed under the Apache License, Version 2.0 (the "License");\r
4 #  you may not use this file except in compliance with the License.\r
5 #  You may obtain a copy of the License at\r
6 #\r
7 #      http://www.apache.org/licenses/LICENSE-2.0\r
8 #\r
9 #  Unless required by applicable law or agreed to in writing, software\r
10 #  distributed under the License is distributed on an "AS IS" BASIS,\r
11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 #  See the License for the specific language governing permissions and\r
13 #  limitations under the License.\r
14 \r
15 from __future__ import annotations\r
16 from o2dms.domain import events\r
17 from o2dms.domain.states import NfDeploymentState\r
18 \r
19 from o2common.domain.base import AgRoot, Serializer\r
20 \r
21 \r
22 class NfDeploymentDesc(AgRoot, Serializer):\r
23     def __init__(self, id: str, name: str, dmsId: str, description: str = '',\r
24                  inputParams: str = '', outputParams: str = '',\r
25                  artifactRepoUrl: str = '', artifactName: str = '') -> None:\r
26         super().__init__()\r
27         self.id = id\r
28         self.version_number = 0\r
29         self.deploymentManagerId = dmsId\r
30         self.name = name\r
31         self.description = description\r
32         self.inputParams = inputParams\r
33         self.outputParams = outputParams\r
34         self.artifactRepoUrl = artifactRepoUrl\r
35         self.artifactName = artifactName\r
36         self.status = 0\r
37         # self.extensions = []\r
38 \r
39 \r
40 class NfDeployment(AgRoot, Serializer):\r
41     def __init__(self, id: str, name: str, dmsId: str, description: str = '',\r
42                  descriptorId: str = '', parentId: str = '',) -> None:\r
43         super().__init__()\r
44         self.id = id\r
45         self.version_number = 0\r
46         self.deploymentManagerId = dmsId\r
47         self.name = name\r
48         self.description = description\r
49         self.descriptorId = descriptorId\r
50         self.parentDeploymentId = parentId\r
51         self.status = NfDeploymentState.Initial\r
52 \r
53     def transit_state(self, state: NfDeploymentState):\r
54         if (self.status != state):\r
55             self._append_event(self.status, state)\r
56             self.status = state\r
57 \r
58     def _append_event(self, fromState, toState):\r
59         if not hasattr(self, "events"):\r
60             self.events = []\r
61         self.events.append(\r
62             events.NfDeploymentStateChanged(\r
63                 NfDeploymentId=self.id, FromState=fromState, ToState=toState))\r
64 \r
65 \r
66 class NfOCloudVResource(AgRoot, Serializer):\r
67     def __init__(self, id: str, name: str, dmsId: str, description: str = '',\r
68                  descriptorId: str = '', nfDeploymentId: str = '',\r
69                  vresourceType: int = 0,) -> None:\r
70         super().__init__()\r
71         self.id = id\r
72         self.version_number = 0\r
73         self.deploymentManagerId = dmsId\r
74         self.name = name\r
75         self.description = description\r
76         self.descriptorId = descriptorId\r
77         self.nfDeploymentId = nfDeploymentId\r
78         self.vresourceType = vresourceType\r
79         self.status = 0\r
80         self.metadata = []\r