X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=code%2Fnetwork-generator%2Fnetwork_generation%2Fmodel%2Fpython%2Fo_ran_termination_point.py;h=034c49a6513efcf9a76f36d88a7a31496a647f53;hb=091313ef66ae97923fd970be160e01d46649a835;hp=6aba16d7d05295260627264a78bcdc34f949be39;hpb=75e7c88e53a85bad86adef4d0e717c1ef964ac74;p=oam.git diff --git a/code/network-generator/network_generation/model/python/o_ran_termination_point.py b/code/network-generator/network_generation/model/python/o_ran_termination_point.py index 6aba16d..034c49a 100644 --- a/code/network-generator/network_generation/model/python/o_ran_termination_point.py +++ b/code/network-generator/network_generation/model/python/o_ran_termination_point.py @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -#!/usr/bin/python +# !/usr/bin/python """ An abstract Class for O-RAN TerminationPoint """ -from abc import abstractmethod +from typing import Any, cast from network_generation.model.python.o_ran_object import ( IORanObject, @@ -26,50 +26,94 @@ from network_generation.model.python.o_ran_object import ( # Define the "IORanObject" interface -class IORanTerminationPointData(IORanObject): - def __init__(self, supporter: str = None, parent=None, **kwargs): - super().__init__(**kwargs) - self.supporter = supporter - self.parent = parent - - -# Define an O-RAN Termination Point (ietf-interface, onf:logical-termination-point) class -class ORanTerminationPoint(ORanObject, IORanTerminationPointData): - def __init__(self, tp: IORanTerminationPointData = None, **kwargs): - super().__init__(tp, **kwargs) - self.supporter = tp["supporter"] if tp and "supporter" in tp else None - self.parent = tp["parent"] if tp and "parent" in tp else None - - def to_topology(self): - result: dict[str, dict] = {"tp-id": self.name} - if self.supporter: - network_ref: str = "" - match str(type(self.parent)): - case "": - network_ref = self.parent.parent.id - case "": - network_ref = self.parent.parent.parent.id - case "": - network_ref = self.parent.parent.parent.parent.id - case "": - network_ref = self.parent.parent.parent.parent.parent.id - case "": - network_ref = self.parent.parent.parent.parent.parent.id - case "": - network_ref = ( - self.parent.parent.parent.parent.parent.parent.id - ) - case _: - print("unknown: implement " + str(type(self.parent))) - network_ref = "unknown: implement " + str( - type(self.parent) - ) - - result["supporting-termination-point"] = [ - { - "network-ref": network_ref, - "node-ref": self.parent.name, - "tp-ref": self.supporter, - } - ] +class IORanTerminationPoint(IORanObject): + supporter: str + parent: Any + + +default_value: IORanTerminationPoint = cast( + IORanTerminationPoint, + { + **ORanObject.default(), + **{ + "supporter": "TerminationPointLayer", + "parent": None, + }, + }, +) + + +# Define an O-RAN Termination Point +# (ietf-interface, onf:logical-termination-point) class +class ORanTerminationPoint(ORanObject): + @staticmethod + def default() -> dict[str, Any]: + return cast(dict[str, Any], default_value) + + def __init__( + self, data: dict[str, Any] = default(), **kwargs: dict[str, Any] + ) -> None: + itp: IORanTerminationPoint = self._to_itp_data(data) + super().__init__(cast(dict[str, Any], itp), **kwargs) + self._supporter: str = str(itp["supporter"]) + self._parent: Any = itp["parent"] + + def _to_itp_data(self, data: dict[str, Any]) -> IORanTerminationPoint: + result: IORanTerminationPoint = default_value + for key, key_type in IORanTerminationPoint.__annotations__.items(): + if key in data: + result[key] = data[key] # type: ignore + return result + + @property + def supporter(self) -> str: + return self._supporter + + @supporter.setter + def supporter(self, value: str) -> None: + self._supporter = value + + @property + def parent(self) -> Any: + return self._utilization + + @parent.setter + def parent(self, value: Any) -> None: + self._parent = value + + def to_topology(self) -> dict[str, Any]: + result: dict[str, Any] = {"tp-id": self.name} + # TODO + # if self.supporter: + # network_ref: str = "" + # match self.parent.__qualname__: + # case ORanSmo.__qualname__: + # network_ref = self.parent.parent.id + # case "": + # network_ref = self.parent.parent.id + # case "": + # network_ref = self.parent.parent.parent.id + # case "": + # network_ref = self.parent.parent.parent.parent.id + # case "": + # network_ref = self.parent.parent.parent.parent.parent.id + # case "": + # network_ref = self.parent.parent.parent.parent.parent.id + # case "": + # network_ref = ( + # self.parent.parent.parent.parent.parent.parent.id + # ) + # case _: + # print("unknown: implement " + str(type(self.parent))) + # network_ref = "unknown: implement " + str( + # type(self.parent) + # ) + + # result["supporting-termination-point"] = [ + # { + # "network-ref": network_ref, + # "node-ref": self.parent.name, + # "tp-ref": self.supporter, + # } + # ] return result