X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=o2ims%2Fdomain%2Fstx_object.py;h=90c166feedfb30b77900828cd29d404922d49aec;hb=b21c925328b0c700fde9001b7a56ea55decdf088;hp=a3adaf2b923fff1440108f5418d24f1b36be1096;hpb=81e3575a77366f30c2049f98c48a3087db0ea992;p=pti%2Fo2.git diff --git a/o2ims/domain/stx_object.py b/o2ims/domain/stx_object.py index a3adaf2..90c166f 100644 --- a/o2ims/domain/stx_object.py +++ b/o2ims/domain/stx_object.py @@ -14,15 +14,44 @@ # from dataclasses import dataclass import datetime +import json +from o2ims.domain.base import AgRoot +from o2ims.domain.resource_type import ResourceTypeEnum +from o2common.helper import o2logging +logger = o2logging.get_logger(__name__) -class StxGenericModel: - def __init__(self, id: str, name: str, - lastupdate: datetime, content: str) -> None: - self.id = id - self.name = name - self.lastupdate = lastupdate - self.content = content - def isChanged(self, updatetime: datetime) -> bool: - return True if self.lastupdate > updatetime else False +class MismatchedModel(Exception): + pass + + +class StxGenericModel(AgRoot): + def __init__(self, type: ResourceTypeEnum, + api_response: dict = None, content_hash=None) -> None: + if api_response: + self.id = 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