X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=code%2Fnetwork-generator%2Fnetwork_generation%2Fmodel%2Fpython%2Ftop.py;h=e68c6158c0847a0b916194dbd25f336ecd6baad3;hb=c55c6dd77a4a206ec792ab6ad1a4cc53b916a3e0;hp=214a7734fa4d2e71f1a96da24a57322d50e95a10;hpb=7004840bca352043aec43d36df79436b90bcbd5a;p=oam.git diff --git a/code/network-generator/network_generation/model/python/top.py b/code/network-generator/network_generation/model/python/top.py index 214a773..e68c615 100644 --- a/code/network-generator/network_generation/model/python/top.py +++ b/code/network-generator/network_generation/model/python/top.py @@ -12,82 +12,84 @@ # See the License for the specific language governing permissions and # limitations under the License. -#!/usr/bin/python +# !/usr/bin/python """ An abstract Class for all classes """ -import uuid -from abc import ABC +from abc import ABC, abstractmethod +from typing import Any, TypedDict, cast + from network_generation.model.python.type_definitions import ( AdministrativeState, + AlarmState, + LifeCycleState, OperationalState, UsageState, Utilization, - LifeCycleState, - AlarmState, ) # Define the ITop interface -class ITop: - def __init__( - self, - id: str = None, - name: str = None, - administrativeState: AdministrativeState = None, - operationalState: OperationalState = None, - lifeCycleState: LifeCycleState = None, - alarmState: AlarmState = None, - usageState: UsageState = None, - utilization: Utilization = None, - ): - self.id = id - self.name = name - self.administrativeState = administrativeState - self.operationalState = operationalState - self.lifeCycleState = lifeCycleState - self.alarmState = alarmState - self.usageState = usageState - self.utilization = utilization +class ITop(TypedDict): + id: str + name: str + administrativeState: AdministrativeState + operationalState: OperationalState + lifeCycleState: LifeCycleState + alarmState: AlarmState + usageState: UsageState + utilization: Utilization + + +# define default value +default_value: ITop = { + "id": "be5229af-2660-4bae-8f2c-b9d0f788fad1", + "name": "NoName", + "administrativeState": AdministrativeState.LOCKED, + "operationalState": OperationalState.DISABLED, + "lifeCycleState": LifeCycleState.PLANNED, + "alarmState": 0, + "usageState": UsageState.UNUSED, + "utilization": 0, +} # Define the Top class -class Top(ABC, ITop): - def __init__(self, data: [dict[str, dict] | None] = None): - self._id = data["id"] if data and "id" in data else str(uuid.uuid4()) - self._name = ( - data["name"] - if data and "name" in data - else " ".join(["Name", "of", self._id]) - ) - self._administrativeState = ( - data["administrativeState"] - if data and "administrativeState" in data - else AdministrativeState.LOCKED - ) - self._operationalState = ( - data["operationalState"] - if data and "operationalState" in data - else OperationalState.DISABLED - ) - self._lifeCycleState = ( - data["lifeCycleState"] - if data and "lifeCycleState" in data - else LifeCycleState.PLANNED - ) - self._alarmState = data["alarmState"] if data and "alarmState" in data else 0 - self._usageState = ( - data["usageState"] if data and "usageState" in data else UsageState.UNUSED - ) - self._utilization = data["utilization"] if data and "utilization" in data else 0 +class Top(ABC): + @staticmethod + def default() -> dict[str, Any]: + return cast(dict[str, Any], default_value) + + def __init__( + self, data: dict[str, Any] = cast(dict[str, Any], default_value) + ) -> None: + super().__init__() + itop: ITop = self._to_itop_data(data) + self._id: str = itop["id"] + self._name: str = itop["name"] + self._administrativeState: AdministrativeState = itop[ + "administrativeState" + ] + self._operationalState: OperationalState = itop["operationalState"] + self._lifeCycleState: LifeCycleState = itop["lifeCycleState"] + self._alarmState: AlarmState = itop["alarmState"] + self._usageState: UsageState = itop["usageState"] + self._utilization: Utilization = itop["utilization"] + + def _to_itop_data(self, data: dict[str, Any]) -> ITop: + result: ITop = default_value + for key, key_type in ITop.__annotations__.items(): + if key in data: + result[key] = data[key] # type: ignore + return result @property def id(self) -> str: return self._id @id.setter - def id(self, value: str): + def id(self, value: str) -> None: self._id = value @property @@ -95,7 +97,7 @@ class Top(ABC, ITop): return self._name @name.setter - def name(self, value: str): + def name(self, value: str) -> None: self._name = value @property @@ -103,7 +105,7 @@ class Top(ABC, ITop): return self._administrativeState @administrativeState.setter - def administrativeState(self, value: AdministrativeState): + def administrativeState(self, value: AdministrativeState) -> None: self._administrativeState = value @property @@ -111,7 +113,7 @@ class Top(ABC, ITop): return self._operationalState @operationalState.setter - def operationalState(self, value: OperationalState): + def operationalState(self, value: OperationalState) -> None: self._operationalState = value @property @@ -119,7 +121,7 @@ class Top(ABC, ITop): return self._lifeCycleState @lifeCycleState.setter - def lifeCycleState(self, value: LifeCycleState): + def lifeCycleState(self, value: LifeCycleState) -> None: self._lifeCycleState = value @property @@ -127,7 +129,7 @@ class Top(ABC, ITop): return self._alarmState @alarmState.setter - def alarmState(self, value: AlarmState): + def alarmState(self, value: AlarmState) -> None: self._alarmState = value @property @@ -135,7 +137,7 @@ class Top(ABC, ITop): return self._usageState @usageState.setter - def usageState(self, value: UsageState): + def usageState(self, value: UsageState) -> None: self._usageState = value @property @@ -143,18 +145,19 @@ class Top(ABC, ITop): return self._utilization @utilization.setter - def utilization(self, value: Utilization): + def utilization(self, value: Utilization) -> None: self._utilization = value - def json(self) -> dict[str, dict]: + @abstractmethod + def json(self) -> dict[str, Any]: return { "id": self.id, "name": self.name, - "administrativeState": self.administrativeState.value, - "operationalState": self.operationalState.value, - "lifeCycleState": self.lifeCycleState.value, + "administrativeState": self.administrativeState, + "operationalState": self.operationalState, + "lifeCycleState": self.lifeCycleState, "alarmState": self.alarmState, - "usageState": self.usageState.value, + "usageState": self.usageState, "utilization": self.utilization, }