Move all business logic code under template folder
[oam.git] / code / network-generator / model / python / o_ran_node.py
diff --git a/code/network-generator/model/python/o_ran_node.py b/code/network-generator/model/python/o_ran_node.py
deleted file mode 100644 (file)
index 219b2c4..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-# Copyright 2023 highstreet technologies GmbH
-#
-# 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.
-
-#!/usr/bin/python
-
-"""
-An abstract Class for O-RAN Node
-"""
-from abc import abstractmethod, abstractproperty
-from typing import Any
-import xml.etree.ElementTree as ET
-import json
-from model.python.geo_location import GeoLocation
-from model.python.o_ran_object import IORanObject, ORanObject
-import model.python.hexagon as Hexagon
-from model.python.hexagon import Hex, Layout
-from model.python.point import Point
-from model.python.o_ran_spiral_radius_profile import SpiralRadiusProfile
-from model.python.o_ran_termination_point import ORanTerminationPoint
-from model.python.type_definitions import (
-    AddressType,
-)
-
-
-# Define the "IORanObject" interface
-class IORanNode(IORanObject):
-    def __init__(
-        self,
-        address: AddressType = None,
-        geoLocation: GeoLocation = None,
-        url: str = None,
-        position: Hex = None,
-        layout: Layout = None,
-        spiralRadiusProfile: SpiralRadiusProfile = None,
-        parent=None,
-        **kwargs
-    ):
-        super().__init__(**kwargs)
-        self.address = address
-        self.geoLocation = geoLocation
-        self.url = url
-        self.position = position
-        self.layout = layout
-        self.spiralRadiusProfile = (spiralRadiusProfile,)
-        self.parent = parent
-
-
-# Define an abstract O-RAN Node class
-class ORanNode(ORanObject, IORanNode):
-    def __init__(self, of: IORanNode = None, **kwargs):
-        super().__init__(of, **kwargs)
-        self.address = of["address"] if of and "address" in of else None
-        self.geoLocation = (
-            of["geoLocation"] if of and "geoLocation" in of else GeoLocation()
-        )
-        self.url = of["url"] if of and "url" in of else self.id
-        self.position = of["position"] if of and "position" in of else Hex(0, 0, 0)
-        self.layout = (
-            of["layout"]
-            if of and "layout" in of
-            else Layout(Hexagon.layout_flat, Point(1, 1), Point(0, 0))
-        )
-        self.spiralRadiusProfile = (
-            of["spiralRadiusProfile"]
-            if of and "spiralRadiusProfile" in of
-            else SpiralRadiusProfile()
-        )
-        self.parent = of["parent"] if of and "parent" in of else None
-        self._termination_points: list[ORanTerminationPoint] = []
-
-    @property
-    def address(self) -> str:
-        return self._address
-
-    @address.setter
-    def address(self, value: str):
-        self._address = value
-
-    @property
-    def geoLocation(self) -> GeoLocation:
-        return self._geographicalLocation
-
-    @geoLocation.setter
-    def geoLocation(self, value: GeoLocation):
-        self._geographicalLocation = value
-
-    @property
-    def url(self) -> str:
-        return self._url
-
-    @url.setter
-    def url(self, value: str):
-        self._url = value
-
-    @property
-    def position(self) -> Hex:
-        return self._position
-
-    @position.setter
-    def position(self, value: Hex):
-        self._position = value
-
-    @property
-    def layout(self) -> Layout:
-        return self._layout
-
-    @layout.setter
-    def layout(self, value: Layout):
-        self._layout = value
-
-    @property
-    def spiralRadiusProfile(self) -> SpiralRadiusProfile:
-        return self._spiralRadiusProfile
-
-    @spiralRadiusProfile.setter
-    def spiralRadiusProfile(self, value: SpiralRadiusProfile):
-        self._spiralRadiusProfile = value
-
-    @property
-    def parent(self) -> Any:  # expected are ORanNodes and all inherits for ORanNode
-        return self._parent
-
-    @parent.setter
-    def parent(self, value: Any):
-        self._parent = value
-
-    @abstractproperty
-    def termination_points(self) -> list[ORanTerminationPoint]:
-        return self._termination_points
-
-    def json(self) -> dict[str, dict]:
-        result: dict = super().json()
-        result["address"] = self.address
-        result["geoLocation"] = self.geoLocation
-        result["url"] = self.url
-        result["layout"] = self.layout
-        result["spiralRadiusProfile"] = self.spiralRadiusProfile
-        result["parent"] = self.parent
-        return result
-
-    @abstractmethod
-    def to_topology_nodes(self) -> list[dict[str, dict]]:
-        tps: list[dict[str, dict]] = []
-        for tp in self.termination_points:
-            if str(type(tp)) == "<class 'model.python.o_ran_termination_point.ORanTerminationPoint'>":
-                tps.append(tp.to_topology())
-
-        result: list[dict[str, dict]] = []
-        result.append({
-            "node-id": self.name,
-            "ietf-network-topology:termination-point": tps,
-        })
-        return result
-
-    @abstractmethod
-    def to_topology_links(self) -> list[dict[str, dict]]:
-        result: list[dict[str, dict]] = []
-        source_tp: str = "-".join([self.name, "phy".upper()])
-        dest_tp: str = "-".join([self.parent.name, "phy".upper()])
-        if self.parent and not "Tower" in source_tp and not "Tower" in dest_tp:
-            link_id: str = "".join(["phy", ":", self.name, "<->", self.parent.name])
-            link = {
-                "link-id": link_id,
-                "source": {"source-node": self.name, "source-tp": source_tp},
-                "destination": {"dest-node": self.parent.name, "dest-tp": dest_tp},
-            }
-            result.append(link)
-        return result
-
-    @abstractmethod
-    def toKml(self) -> ET.Element | None:
-        pass
-
-    @abstractmethod
-    def toSvg(self) -> ET.Element | None:
-        pass