Skip to content

Commit ae2c19a

Browse files
feat(topology): add support for nGraphResourceTransform
- add NGraphResourceTransform model - update topology device configuration model - update topology device configuration compare model - update methods in topology api - update methods in topology app
1 parent e7c5739 commit ae2c19a

5 files changed

Lines changed: 221 additions & 52 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from typing import List, Literal
2+
3+
from pydantic import Field
4+
5+
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_n_graph_element import (
6+
Descriptor,
7+
NGraphElement,
8+
)
9+
10+
11+
class NGraphResourceTransform(NGraphElement):
12+
"""
13+
Represents the attributes of a nGraphResourceTransform.
14+
15+
"""
16+
17+
active: bool = Field(default=True)
18+
descriptor: Descriptor
19+
fDescriptor: Descriptor
20+
fromId: str
21+
tags: List[str] = Field(default=[], description="List of tags.")
22+
toId: str
23+
fResourceIds: List[str] = Field(default=[], description="Factory resource ids")
24+
resourceIds: List[str] = Field(default=[], description="User resource ids")
25+
type: Literal["nGraphResourceTransform"] = "nGraphResourceTransform"
26+
27+
@property
28+
def from_id(self) -> str:
29+
"""The source vertex ID."""
30+
return self.fromId
31+
32+
@property
33+
def to_id(self) -> str:
34+
"""The destination vertex ID."""
35+
return self.toId
36+
37+
@property
38+
def factory_resource_ids(self) -> List[str]:
39+
"""The factory resource IDs."""
40+
return self.fResourceIds
41+
42+
@property
43+
def resource_ids(self) -> List[str]:
44+
"""The user defined resource IDs."""
45+
return self.resourceIds

src/videoipath_automation_tool/apps/topology/model/topology_device_configuration.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
MapsElement,
1818
SdpStrategy,
1919
)
20+
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_n_graph_resource_transform import (
21+
NGraphResourceTransform,
22+
)
2023
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_unidirectional_edge import (
2124
UnidirectionalEdge,
2225
)
@@ -34,6 +37,7 @@ class TopologyDeviceConfiguration(BaseModel):
3437
codec_vertices (List[CodecVertex]): Configuration of the codec vertices of the device
3538
internal_edges (List[UnidirectionalEdge]): Configuration of the internal unidirectional edges of the device (All edges that connect vertices within the same device)
3639
external_edges (List[UnidirectionalEdge]): Configuration of the external unidirectional edges of the device (All edges that connect this device to other devices)
40+
resource_transform_edges (List[NGraphResourceTransform]): Configuration of the resource transform edges of the device
3741
"""
3842

3943
base_device: BaseDevice
@@ -42,6 +46,7 @@ class TopologyDeviceConfiguration(BaseModel):
4246
codec_vertices: List[CodecVertex] = Field(default_factory=list)
4347
internal_edges: List[UnidirectionalEdge] = Field(default_factory=list)
4448
external_edges: List[UnidirectionalEdge] = Field(default_factory=list)
49+
resource_transform_edges: List[NGraphResourceTransform] = Field(default_factory=list)
4550

4651
# --- Setters and Getters ---
4752

@@ -245,7 +250,7 @@ def get_vertices_by_module_label(
245250

246251
def get_nGraphElement_by_id(
247252
self, element_id: str
248-
) -> Optional[BaseDevice | GenericVertex | IpVertex | CodecVertex | UnidirectionalEdge]:
253+
) -> Optional[BaseDevice | GenericVertex | IpVertex | CodecVertex | UnidirectionalEdge | NGraphResourceTransform]:
249254
"""Get an nGraphElement by its ID. Method will return the first element found with the specified ID.
250255
251256
Args:
@@ -261,6 +266,7 @@ def get_nGraphElement_by_id(
261266
self.codec_vertices,
262267
self.internal_edges,
263268
self.external_edges,
269+
self.resource_transform_edges,
264270
)
265271

266272
matching_element = next((element for element in all_elements if element.id == element_id), None)

src/videoipath_automation_tool/apps/topology/model/topology_device_configuration_compare.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_generic_vertex import GenericVertex
88
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_ip_vertex import IpVertex
99
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_n_graph_element import NGraphElement
10+
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_n_graph_resource_transform import (
11+
NGraphResourceTransform,
12+
)
1013
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_unidirectional_edge import (
1114
UnidirectionalEdge,
1215
)
@@ -249,6 +252,7 @@ class TopologyDeviceComparison(BaseModel):
249252
codec_vertices: NGraphElementListComparison
250253
internal_edges: NGraphElementListComparison
251254
external_edges: NGraphElementListComparison
255+
resource_transform_edges: NGraphElementListComparison
252256

253257
@classmethod
254258
def analyze_topology_devices(
@@ -273,6 +277,10 @@ def analyze_topology_devices(
273277
external_edges = cls.create_compare_list(
274278
reference_device.configuration.external_edges, staged_device.configuration.external_edges
275279
)
280+
resource_transform_edges = cls.create_compare_list(
281+
reference_device.configuration.resource_transform_edges,
282+
staged_device.configuration.resource_transform_edges,
283+
)
276284

277285
return cls(
278286
reference_device=reference_device,
@@ -283,6 +291,7 @@ def analyze_topology_devices(
283291
codec_vertices=codec_vertices,
284292
internal_edges=internal_edges,
285293
external_edges=external_edges,
294+
resource_transform_edges=resource_transform_edges,
286295
)
287296

288297
@staticmethod
@@ -291,12 +300,14 @@ def create_compare_list(
291300
| List[GenericVertex]
292301
| List[IpVertex]
293302
| List[CodecVertex]
294-
| List[UnidirectionalEdge],
303+
| List[UnidirectionalEdge]
304+
| List[NGraphResourceTransform],
295305
staged_elements: List[NGraphElement]
296306
| List[GenericVertex]
297307
| List[IpVertex]
298308
| List[CodecVertex]
299-
| List[UnidirectionalEdge],
309+
| List[UnidirectionalEdge]
310+
| List[NGraphResourceTransform],
300311
) -> NGraphElementListComparison:
301312
"""Method to create a comparison list between two lists of nGraphElements."""
302313
reference_element_ids = [element.id for element in reference_elements]
@@ -353,6 +364,9 @@ def get_changed_elements(self, include_rev=False) -> List[NGraphElementDiff]:
353364
if len(self.external_edges.get_changed(include_rev)) > 0:
354365
changed_elements += self.external_edges.get_changed(include_rev)
355366

367+
if len(self.resource_transform_edges.get_changed(include_rev)) > 0:
368+
changed_elements += self.resource_transform_edges.get_changed(include_rev)
369+
356370
return changed_elements
357371

358372
def get_added_elements(self) -> List[NGraphElement]:
@@ -363,6 +377,7 @@ def get_added_elements(self) -> List[NGraphElement]:
363377
added_elements += self.codec_vertices.get_added()
364378
added_elements += self.internal_edges.get_added()
365379
added_elements += self.external_edges.get_added()
380+
added_elements += self.resource_transform_edges.get_added()
366381
return added_elements
367382

368383
def get_removed_elements(self) -> List[NGraphElement]:
@@ -373,4 +388,5 @@ def get_removed_elements(self) -> List[NGraphElement]:
373388
removed_elements += self.codec_vertices.get_removed()
374389
removed_elements += self.internal_edges.get_removed()
375390
removed_elements += self.external_edges.get_removed()
391+
removed_elements += self.resource_transform_edges.get_removed()
376392
return removed_elements

0 commit comments

Comments
 (0)