X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2app%2Fadapter%2Funit_of_work.py;h=732216ed01d4e0891ea2d37e8f07cee9b28ad2d6;hb=df31a02911f55d292188ca514c3a30fface9c8a6;hp=0faba563279343be552b709c669ee6b3fd2549eb;hpb=5e02e76308e1677fb106572b885a366eb6c0fbec;p=pti%2Fo2.git diff --git a/o2app/adapter/unit_of_work.py b/o2app/adapter/unit_of_work.py index 0faba56..732216e 100644 --- a/o2app/adapter/unit_of_work.py +++ b/o2app/adapter/unit_of_work.py @@ -24,15 +24,24 @@ from o2common.service.unit_of_work import AbstractUnitOfWork from o2ims.adapter import ocloud_repository from o2dms.adapter import dms_repository +from o2common.helper import o2logging +logger = o2logging.get_logger(__name__) + + +engine = create_engine( + config.get_postgres_uri(), + isolation_level="REPEATABLE READ", + pool_size=200, max_overflow=0, + pool_recycle=3600 +) + DEFAULT_SESSION_FACTORY = sessionmaker( - bind=create_engine( - config.get_postgres_uri(), - isolation_level="REPEATABLE READ", - ) + autocommit=False, autoflush=False, bind=engine ) class SqlAlchemyUnitOfWork(AbstractUnitOfWork): + def __init__(self, session_factory=DEFAULT_SESSION_FACTORY): self.session_factory = session_factory @@ -46,10 +55,18 @@ class SqlAlchemyUnitOfWork(AbstractUnitOfWork): .ResourcePoolSqlAlchemyRepository(self.session) self.resources = ocloud_repository\ .ResourceSqlAlchemyRepository(self.session) + self.subscriptions = ocloud_repository\ + .SubscriptionSqlAlchemyRepository(self.session) + self.configurations = ocloud_repository\ + .ConfigurationSqlAlchemyRepository(self.session) self.deployment_managers = ocloud_repository\ .DeploymentManagerSqlAlchemyRepository(self.session) self.nfdeployment_descs = dms_repository\ .NfDeploymentDescSqlAlchemyRepository(self.session) + self.nfdeployments = dms_repository\ + .NfDeploymentSqlAlchemyRepository(self.session) + self.ocloudvresources = dms_repository\ + .NfOCloudVResourceSqlAlchemyRepository(self.session) return super().__enter__() def __exit__(self, *args): @@ -64,20 +81,33 @@ class SqlAlchemyUnitOfWork(AbstractUnitOfWork): def _collect_new_events(self): for entry in self.oclouds.seen: - while entry.events: + # while hasattr(entry, 'events') and len(entry.events) > 0: + while entry.events is not None and len(entry.events) > 0: yield entry.events.pop(0) for entry in self.resource_pools.seen: - while entry.events: + while entry.events is not None and len(entry.events) > 0: yield entry.events.pop(0) for entry in self.resources.seen: - while entry.events: + while entry.events is not None and len(entry.events) > 0: yield entry.events.pop(0) for entry in self.resource_types.seen: - while entry.events: + while hasattr(entry, 'events') and len(entry.events) > 0: yield entry.events.pop(0) for entry in self.deployment_managers.seen: - while entry.events: + while hasattr(entry, 'events') and len(entry.events) > 0: + yield entry.events.pop(0) + for entry in self.subscriptions.seen: + while hasattr(entry, 'events') and len(entry.events) > 0: + yield entry.events.pop(0) + for entry in self.configurations.seen: + while hasattr(entry, 'events') and len(entry.events) > 0: yield entry.events.pop(0) for entry in self.nfdeployment_descs.seen: - while entry.events: + while hasattr(entry, 'events') and len(entry.events) > 0: + yield entry.events.pop(0) + for entry in self.nfdeployments.seen: + while hasattr(entry, 'events') and len(entry.events) > 0: + yield entry.events.pop(0) + for entry in self.ocloudvresources.seen: + while hasattr(entry, 'events') and len(entry.events) > 0: yield entry.events.pop(0)