X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Funit_of_work.py;h=04459962a734f4ae79f196712189459cc3a4affe;hb=19ee63847f8eb032009e63634b90eb594f3c0408;hp=40e0f7629c71da9ec88232fcc496916fcae7d082;hpb=81e3575a77366f30c2049f98c48a3087db0ea992;p=pti%2Fo2.git diff --git a/o2ims/service/unit_of_work.py b/o2ims/service/unit_of_work.py index 40e0f76..0445996 100644 --- a/o2ims/service/unit_of_work.py +++ b/o2ims/service/unit_of_work.py @@ -15,16 +15,20 @@ # pylint: disable=attribute-defined-outside-init from __future__ import annotations import abc -from sqlalchemy import create_engine -from sqlalchemy.orm import sessionmaker -from sqlalchemy.orm.session import Session -from o2ims import config -from o2ims.adapter import ocloud_repository +from o2ims.domain.ocloud_repo import OcloudRepository,\ + ResourcePoolRepository, ResourceRepository, ResourceTypeRepository,\ + DeploymentManagerRepository +from o2ims.domain.stx_repo import StxObjectRepository class AbstractUnitOfWork(abc.ABC): - oclouds: ocloud_repository.OcloudRepository + oclouds: OcloudRepository + resource_types: ResourceTypeRepository + resource_pools: ResourcePoolRepository + resources: ResourceRepository + deployment_managers: DeploymentManagerRepository + stxobjects: StxObjectRepository def __enter__(self): return self @@ -36,9 +40,24 @@ class AbstractUnitOfWork(abc.ABC): self._commit() def collect_new_events(self): - for ocloud in self.oclouds.seen: - while ocloud.events: - yield ocloud.events.pop(0) + for entry in self.oclouds.seen: + while entry.events: + yield entry.events.pop(0) + for entry in self.resource_pools.seen: + while entry.events: + yield entry.events.pop(0) + for entry in self.resources.seen: + while entry.events: + yield entry.events.pop(0) + for entry in self.resource_types.seen: + while entry.events: + yield entry.events.pop(0) + # for entry in self.stxobjects.seen: + # while entry.events: + # yield entry.events.pop(0) + for entry in self.deployment_managers.seen: + while entry.events: + yield entry.events.pop(0) @abc.abstractmethod def _commit(self): @@ -47,32 +66,3 @@ class AbstractUnitOfWork(abc.ABC): @abc.abstractmethod def rollback(self): raise NotImplementedError - - -DEFAULT_SESSION_FACTORY = sessionmaker( - bind=create_engine( - config.get_postgres_uri(), - isolation_level="REPEATABLE READ", - ) -) - - -class SqlAlchemyUnitOfWork(AbstractUnitOfWork): - def __init__(self, session_factory=DEFAULT_SESSION_FACTORY): - self.session_factory = session_factory - - def __enter__(self): - self.session = self.session_factory() # type: Session - self.oclouds = ocloud_repository\ - .OcloudSqlAlchemyRepository(self.session) - return super().__enter__() - - def __exit__(self, *args): - super().__exit__(*args) - self.session.close() - - def _commit(self): - self.session.commit() - - def rollback(self): - self.session.rollback()