Add nfdeployment handlers
[pti/o2.git] / o2dms / domain / dms.py
index 783231f..3555e1c 100644 (file)
 #  limitations under the License.\r
 \r
 from __future__ import annotations\r
+from o2dms.domain import events\r
+from o2dms.domain.states import NfDeploymentState\r
 \r
-from o2common.domain.base import AgRoot\r
+from o2common.domain.base import AgRoot, Serializer\r
 \r
 \r
-class NfDeploymentDesc(AgRoot):\r
+class NfDeploymentDesc(AgRoot, Serializer):\r
     def __init__(self, id: str, name: str, dmsId: str, description: str = '',\r
                  inputParams: str = '', outputParams: str = '',\r
-                 artifacturl: str = '') -> None:\r
+                 artifactRepoUrl: str = '', artifactName: str = '') -> None:\r
         super().__init__()\r
         self.id = id\r
         self.version_number = 0\r
@@ -29,11 +31,13 @@ class NfDeploymentDesc(AgRoot):
         self.description = description\r
         self.inputParams = inputParams\r
         self.outputParams = outputParams\r
-        self.artifactUrl = artifacturl\r
+        self.artifactRepoUrl = artifactRepoUrl\r
+        self.artifactName = artifactName\r
+        self.status = 0\r
         # self.extensions = []\r
 \r
 \r
-class NfDeployment(AgRoot):\r
+class NfDeployment(AgRoot, Serializer):\r
     def __init__(self, id: str, name: str, dmsId: str, description: str = '',\r
                  descriptorId: str = '', parentId: str = '',) -> None:\r
         super().__init__()\r
@@ -44,10 +48,22 @@ class NfDeployment(AgRoot):
         self.description = description\r
         self.descriptorId = descriptorId\r
         self.parentDeploymentId = parentId\r
-        self.status = 0\r
+        self.status = NfDeploymentState.Initial\r
+\r
+    def transit_state(self, state: NfDeploymentState):\r
+        if (self.status != state):\r
+            self._append_event(self.status, state)\r
+            self.status = state\r
+\r
+    def _append_event(self, fromState, toState):\r
+        if not hasattr(self, "events"):\r
+            self.events = []\r
+        self.events.append(\r
+            events.NfDeploymentStateChanged(\r
+                NfDeploymentId=self.id, FromState=fromState, ToState=toState))\r
 \r
 \r
-class NfOCloudVResource(AgRoot):\r
+class NfOCloudVResource(AgRoot, Serializer):\r
     def __init__(self, id: str, name: str, dmsId: str, description: str = '',\r
                  descriptorId: str = '', nfDeploymentId: str = '',\r
                  vresourceType: int = 0,) -> None:\r