Update watcher worker
[pti/o2.git] / o2ims / domain / stx_object.py
index 09d1a16..36ce349 100644 (file)
 #  limitations under the License.\r
 \r
 # from dataclasses import dataclass\r
-import datetime\r
+import datetime\r
 import json\r
 \r
+from o2ims.domain.resource_type import ResourceTypeEnum\r
+import logging\r
+logger = logging.getLogger(__name__)\r
+\r
 \r
 class MismatchedModel(Exception):\r
     pass\r
 \r
 \r
 class StxGenericModel:\r
-    def __init__(self, api_response: dict = None) -> None:\r
+    def __init__(self, type: ResourceTypeEnum,\r
+                 api_response: dict = None, content_hash=None) -> None:\r
         if api_response:\r
             self.id = api_response.uuid\r
-            self.content = json.dumps(api_response.to_dict())\r
-            self.updatetime = api_response.updated_at\r
-            self.createtime = api_response.created_at\r
+            self.type = type\r
+            self.updatetime = datetime.datetime.strptime(\r
+                api_response.updated_at.split('.')[0], "%Y-%m-%dT%H:%M:%S") \\r
+                if api_response.updated_at else None\r
+            self.createtime = datetime.datetime.strptime(\r
+                api_response.created_at.split('.')[0], "%Y-%m-%dT%H:%M:%S") \\r
+                if api_response.created_at else None\r
             self.name = api_response.name\r
+            self.hash = content_hash if content_hash \\r
+                else str(hash((self.id, self.updatetime)))\r
+            self.content = json.dumps(api_response.to_dict())\r
 \r
     def is_outdated(self, newmodel) -> bool:\r
-        return self.updatetime < newmodel.updatetime\r
+        # return self.updatetime < newmodel.updatetime\r
+        # logger.warning("hash1: " + self.hash + " vs hash2: " + newmodel.hash)\r
+        return self.hash != newmodel.hash\r
 \r
     def update_by(self, newmodel) -> None:\r
         if self.id != newmodel.id:\r
             raise MismatchedModel("Mismatched model")\r
         self.name = newmodel.name\r
-\r
-        self.content = newmodel.content\r
         self.createtime = newmodel.createtime\r
         self.updatetime = newmodel.updatetime\r
-\r
-\r
-class StxK8sClusterModel(StxGenericModel):\r
-    def __init__(self, api_response: dict = None) -> None:\r
-        super().__init__(api_response=api_response)\r
-\r
-    def is_outdated(self, newmodel) -> bool:\r
-        # never outdated since lack of such evidence\r
-        return False\r
+        self.content = newmodel.content\r