-# Copyright (C) 2021 Wind River Systems, Inc.\r
-#\r
-# Licensed under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You may obtain a copy of the License at\r
-#\r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-\r
-# from dataclasses import dataclass\r
-import datetime\r
-import json\r
-\r
-\r
-class StxGenericModel:\r
- def __init__(self, api_response: dict = 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.name = api_response.name\r
-\r
- # def __init__(self, id: str, name: str,\r
- # lastupdate: datetime, content: str) -> None:\r
- # self.id = id\r
- # self.name = name\r
- # self.lastupdate = lastupdate\r
- # self.content = content\r
-\r
- def isChanged(self, updatetime: datetime) -> bool:\r
- return True if self.updatetime > updatetime else False\r
+# Copyright (C) 2021 Wind River Systems, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# from dataclasses import dataclass
+import datetime
+import json
+from o2common.domain.base import AgRoot
+
+from o2ims.domain.resource_type import ResourceTypeEnum, MismatchedModel
+from o2common.helper import o2logging
+logger = o2logging.get_logger(__name__)
+
+
+class StxGenericModel(AgRoot):
+ def __init__(self, type: ResourceTypeEnum,
+ api_response: dict = None, content_hash=None) -> None:
+ super().__init__()
+ if api_response:
+ self.id = str(api_response.uuid)
+ self.type = type
+ self.updatetime = datetime.datetime.strptime(
+ api_response.updated_at.split('.')[0], "%Y-%m-%dT%H:%M:%S") \
+ if api_response.updated_at else None
+ self.createtime = datetime.datetime.strptime(
+ api_response.created_at.split('.')[0], "%Y-%m-%dT%H:%M:%S") \
+ if api_response.created_at else None
+ self.name = api_response.name
+ self.hash = content_hash if content_hash \
+ else str(hash((self.id, self.updatetime)))
+ self.content = json.dumps(api_response.to_dict())
+
+ def is_outdated(self, newmodel) -> bool:
+ # return self.updatetime < newmodel.updatetime
+ # logger.warning("hash1: " + self.hash + " vs hash2: " + newmodel.hash)
+ return self.hash != newmodel.hash
+
+ def update_by(self, newmodel) -> None:
+ if self.id != newmodel.id:
+ raise MismatchedModel("Mismatched model")
+ self.name = newmodel.name
+ self.createtime = newmodel.createtime
+ self.updatetime = newmodel.updatetime
+ self.content = newmodel.content