# limitations under the License.\r
\r
# from dataclasses import dataclass\r
-# import datetime\r
+import datetime\r
import json\r
+from o2common.domain.base import AgRoot\r
\r
+from o2ims.domain.resource_type import ResourceTypeEnum, MismatchedModel\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
\r
-class MismatchedModel(Exception):\r
- pass\r
\r
-\r
-class StxGenericModel:\r
- def __init__(self, api_response: dict = None) -> None:\r
+class StxGenericModel(AgRoot):\r
+ def __init__(self, type: ResourceTypeEnum,\r
+ api_response: dict = None, content_hash=None) -> None:\r
+ super().__init__()\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.id = str(api_response.uuid)\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
+ self.content = newmodel.content\r