From: Bin Yang Date: Tue, 16 Nov 2021 08:02:03 +0000 (+0800) Subject: Update domain for event handler X-Git-Tag: 1.0.0~30 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=b21c925328b0c700fde9001b7a56ea55decdf088;p=pti%2Fo2.git Update domain for event handler Signed-off-by: Bin Yang Change-Id: I9d871bb8fa0635a9a5df18247ed340e54ad9ff69 --- diff --git a/o2ims/domain/base.py b/o2ims/domain/base.py new file mode 100644 index 0000000..f7eceb7 --- /dev/null +++ b/o2ims/domain/base.py @@ -0,0 +1,21 @@ +# 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 typing import List +from .events import Event + + +class AgRoot: + def __init__(self) -> None: + self.events = [] # type: List[Event] diff --git a/o2ims/domain/ocloud.py b/o2ims/domain/ocloud.py index e86e45c..7ed2c1e 100644 --- a/o2ims/domain/ocloud.py +++ b/o2ims/domain/ocloud.py @@ -13,6 +13,8 @@ # limitations under the License. from __future__ import annotations + +from o2ims.domain.base import AgRoot # from dataclasses import dataclass # from datetime import date # from typing import Optional, List, Set @@ -20,7 +22,7 @@ from .resource_type import ResourceTypeEnum # from uuid import UUID -class Subscription: +class Subscription(AgRoot): def __init__(self, id: str, callback: str, consumersubid: list = [], filter: list = []) -> None: self.subscriptionId = id @@ -45,7 +47,7 @@ class DeploymentManager: self.extensions = [] -class ResourcePool: +class ResourcePool(AgRoot): def __init__(self, id: str, name: str, location: str, ocloudid: str, gLocationId: str = '', description: str = '') -> None: @@ -58,7 +60,7 @@ class ResourcePool: self.extensions = [] -class ResourceType: +class ResourceType(AgRoot): def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum, ocloudid: str, vender: str = '', model: str = '', version: str = '', @@ -74,7 +76,7 @@ class ResourceType: self.extensions = [] -class Resource: +class Resource(AgRoot): def __init__(self, resourceId: str, resourceTypeId: str, resourcePoolId: str, oCloudId: str = '', parentId: str = '', elements: list = [], @@ -89,11 +91,11 @@ class Resource: self.extensions = [] -class Ocloud: +class Ocloud(AgRoot): def __init__(self, ocloudid: str, name: str, imsendpoint: str, globalcloudId: str = '', description: str = '', version_number: int = 0) -> None: - + super().__init__() self.oCloudId = ocloudid self.globalcloudId = globalcloudId self.version_number = version_number @@ -104,7 +106,7 @@ class Ocloud: self.deploymentManagers = [] self.resourceTypes = [] self.extensions = [] - self.events = [] + # self.events = [] def addDeploymentManager(self, deploymentManager: DeploymentManager): diff --git a/o2ims/domain/ocloud_repo.py b/o2ims/domain/ocloud_repo.py index 48ad840..f3b43d2 100644 --- a/o2ims/domain/ocloud_repo.py +++ b/o2ims/domain/ocloud_repo.py @@ -36,6 +36,7 @@ class OcloudRepository(abc.ABC): def update(self, ocloud: ocloud.Ocloud): self._update(ocloud) + self.seen.add(ocloud) # def update_fields(self, ocloudid: str, updatefields: dict): # self._update(ocloudid, updatefields) @@ -72,6 +73,7 @@ class ResourceTypeRepository(abc.ABC): def update(self, resource_type: ocloud.ResourceType): self._update(resource_type) + self.seen.add(resource_type) @abc.abstractmethod def _add(self, resource_type: ocloud.ResourceType): @@ -105,6 +107,7 @@ class ResourcePoolRepository(abc.ABC): def update(self, resource_pool: ocloud.ResourcePool): self._update(resource_pool) + self.seen.add(resource_pool) @abc.abstractmethod def _add(self, resource_pool: ocloud.ResourcePool): @@ -138,6 +141,7 @@ class ResourceRepository(abc.ABC): def update(self, resource: ocloud.Resource): self._update(resource) + self.seen.add(resource) @abc.abstractmethod def _add(self, resource: ocloud.Resource): diff --git a/o2ims/domain/stx_object.py b/o2ims/domain/stx_object.py index e648755..90c166f 100644 --- a/o2ims/domain/stx_object.py +++ b/o2ims/domain/stx_object.py @@ -15,6 +15,7 @@ # 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 @@ -25,7 +26,7 @@ class MismatchedModel(Exception): pass -class StxGenericModel: +class StxGenericModel(AgRoot): def __init__(self, type: ResourceTypeEnum, api_response: dict = None, content_hash=None) -> None: if api_response: diff --git a/o2ims/domain/stx_repo.py b/o2ims/domain/stx_repo.py index cb74480..c9ef6c2 100644 --- a/o2ims/domain/stx_repo.py +++ b/o2ims/domain/stx_repo.py @@ -37,6 +37,7 @@ class StxObjectRepository(abc.ABC): def update(self, stx_obj: StxGenericModel): self._update(stx_obj) + self.seen.add(stx_obj) # def update_fields(self, stx_obj_id: str, updatefields: dict): # self._update(stx_obj_id, updatefields) diff --git a/o2ims/service/unit_of_work.py b/o2ims/service/unit_of_work.py index a06e9e0..f329ebc 100644 --- a/o2ims/service/unit_of_work.py +++ b/o2ims/service/unit_of_work.py @@ -16,12 +16,16 @@ from __future__ import annotations import abc -from o2ims.domain.ocloud_repo import OcloudRepository +from o2ims.domain.ocloud_repo import OcloudRepository,\ + ResourcePoolRepository, ResourceRepository, ResourceTypeRepository from o2ims.domain.stx_repo import StxObjectRepository class AbstractUnitOfWork(abc.ABC): oclouds: OcloudRepository + resource_types: ResourceTypeRepository + resource_pools: ResourcePoolRepository + resources: ResourceRepository stxobjects: StxObjectRepository def __enter__(self): @@ -34,9 +38,21 @@ 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) @abc.abstractmethod def _commit(self):