X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Fwatcher%2Focloud_watcher.py;h=1d0c0ae8fc78aa9ad77c1003dd168cff04afc677;hb=84867b76a65efc4e9add52c86eae7e451c4a038d;hp=acdc6557d9c08c66901bf7f174a0905d329d6a7f;hpb=e60b74de2ecaccc5f2fef8e75a44649d0e90d362;p=pti%2Fo2.git diff --git a/o2ims/service/watcher/ocloud_watcher.py b/o2ims/service/watcher/ocloud_watcher.py index acdc655..1d0c0ae 100644 --- a/o2ims/service/watcher/ocloud_watcher.py +++ b/o2ims/service/watcher/ocloud_watcher.py @@ -12,69 +12,72 @@ # See the License for the specific language governing permissions and # limitations under the License. -from o2ims.domain.resource_type import ResourceTypeEnum -from o2ims.service.client.base_client import BaseClient +# from o2ims.domain.resource_type import ResourceTypeEnum +from o2common.service.client.base_client import BaseClient from o2ims.domain.stx_object import StxGenericModel -from o2ims.service.unit_of_work import AbstractUnitOfWork -from o2ims.service.watcher.base import BaseWatcher +# from o2common.service.unit_of_work import AbstractUnitOfWork +from o2common.service.watcher.base import BaseWatcher +from o2ims.domain import commands +from o2common.service.messagebus import MessageBus -import logging -logger = logging.getLogger(__name__) - - -class InvalidOcloudState(Exception): - pass +from o2common.helper import o2logging +logger = o2logging.get_logger(__name__) class OcloudWatcher(BaseWatcher): def __init__(self, ocloud_client: BaseClient, - uow: AbstractUnitOfWork) -> None: - super().__init__(ocloud_client, uow) + bus: MessageBus) -> None: + super().__init__(ocloud_client, bus) def _targetname(self): return "ocloud" def _probe(self, parent: object = None): - ocloudmodel = self._client.get(None) - if ocloudmodel: - self._compare_and_update(ocloudmodel) - return [ocloudmodel] + newmodel = self._client.get(None) + if newmodel: + logger.debug("found ocloud: " + newmodel.name) + else: + logger.warning("Failed to find out any ocloud") + # self._compare_and_update(ocloudmodel) + return [commands.UpdateOCloud(newmodel)] if newmodel else [] - def _compare_and_update(self, ocloudmodel: StxGenericModel) -> bool: - with self._uow: - # localmodel = self._uow.stxobjects.get(str(ocloudmodel.id)) - oclouds = self._uow.stxobjects.list(ResourceTypeEnum.OCLOUD) - if len(oclouds) > 1: - raise InvalidOcloudState("More than 1 ocloud is found") - if len(oclouds) == 0: - logger.info("add ocloud:" + ocloudmodel.name - + " update_at: " + str(ocloudmodel.updatetime) - + " id: " + str(ocloudmodel.id) - + " hash: " + str(ocloudmodel.hash)) - self._uow.stxobjects.add(ocloudmodel) - else: - localmodel = oclouds.pop() - if localmodel.is_outdated(ocloudmodel): - logger.info("update ocloud:" + ocloudmodel.name - + " update_at: " + str(ocloudmodel.updatetime) - + " id: " + str(ocloudmodel.id) - + " hash: " + str(ocloudmodel.hash)) - localmodel.update_by(ocloudmodel) - self._uow.stxobjects.update(localmodel) - self._uow.commit() +# def _compare_and_update(self, ocloudmodel: StxGenericModel) -> bool: +# with self._uow: +# # localmodel = self._uow.stxobjects.get(str(ocloudmodel.id)) +# oclouds = self._uow.stxobjects.list(ResourceTypeEnum.OCLOUD) +# if len(oclouds) > 1: +# raise InvalidOcloudState("More than 1 ocloud is found") +# if len(oclouds) == 0: +# logger.info("add ocloud:" + ocloudmodel.name +# + " update_at: " + str(ocloudmodel.updatetime) +# + " id: " + str(ocloudmodel.id) +# + " hash: " + str(ocloudmodel.hash)) +# self._uow.stxobjects.add(ocloudmodel) +# else: +# localmodel = oclouds.pop() +# if localmodel.is_outdated(ocloudmodel): +# logger.info("update ocloud:" + ocloudmodel.name +# + " update_at: " + str(ocloudmodel.updatetime) +# + " id: " + str(ocloudmodel.id) +# + " hash: " + str(ocloudmodel.hash)) +# localmodel.update_by(ocloudmodel) +# self._uow.stxobjects.update(localmodel) +# self._uow.commit() class DmsWatcher(BaseWatcher): def __init__(self, client: BaseClient, - uow: AbstractUnitOfWork) -> None: - super().__init__(client, uow) + bus: MessageBus) -> None: + super().__init__(client, bus) def _targetname(self): return "dms" - def _probe(self, parent: object = None): - ocloudid = parent.id if parent else None + def _probe(self, parent: StxGenericModel): + ocloudid = parent.id newmodels = self._client.list(ocloudid=ocloudid) - for newmodel in newmodels: - super()._compare_and_update(newmodel) - return newmodels + # for newmodel in newmodels: + # super()._compare_and_update(newmodel) + # return newmodels + return [commands.UpdateDms(data=m, parentid=ocloudid) + for m in newmodels]