X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=code%2Fnetwork-generator%2Fmodel%2Fpython%2Fo_ran_node.py;h=e5a819e65189113fc7793a0d22a9115f9a0a1b73;hb=b6948c6bf9a550ef22fcb6607587e39a3879b74f;hp=2320ffa95da927670f38bd9c7a55eb5975665c57;hpb=198451948bb5dc7d99a9b6a7b58a2013974bd332;p=oam.git diff --git a/code/network-generator/model/python/o_ran_node.py b/code/network-generator/model/python/o_ran_node.py index 2320ffa..e5a819e 100644 --- a/code/network-generator/model/python/o_ran_node.py +++ b/code/network-generator/model/python/o_ran_node.py @@ -19,18 +19,124 @@ An abstract Class for O-RAN Node """ from abc import abstractmethod from typing import Any, Dict + +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, Point +from model.python.o_ran_spiral_radius_profile import SpiralRadiusProfile +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): - def __init__(self, of: IORanObject = None, **kwargs): +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._terminationPoints = [] + @property + def address(self): + return self._address + + @address.setter + def address(self, value): + self._address = value + + @property + def geoLocation(self): + return self._geographicalLocation + + @geoLocation.setter + def geoLocation(self, value): + self._geographicalLocation = value + + @property + def url(self): + return self._url + + @url.setter + def url(self, value): + self._url = value + + @property + def position(self): + return self._position + + @position.setter + def position(self, value): + self._position = value + + @property + def layout(self): + return self._layout + + @layout.setter + def layout(self, value): + self._layout = value + + @property + def spiralRadiusProfile(self): + return self._spiralRadiusProfile + + @spiralRadiusProfile.setter + def spiralRadiusProfile(self, value): + self._spiralRadiusProfile = value + + @property + def parent(self): + return self._parent + + @parent.setter + def parent(self, value): + self._parent = value + @property def terminationPoints(self): return self._terminationPoints + def json(self): + 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 + def toTopology(self): result:Dict[str, Any] = { "node-id": self.name,