System Preferences: Multicast Pools

January 23, 2026 ยท View on GitHub

Tip: Define a variable for the allocation_pools_config for easier access

allocation_pools_config = app.preferences.system_configuration.allocation_pools

Code Example 1: Querying Multicast Pools from VideoIPath-Server

mc_ranges = allocation_pools_config.get_multicast_ranges()

print("Names of the Ranges:")
print(mc_ranges.available_ranges, "\n")  # Lists the names of the ranges

print("Range object with the name 'A':")
print(mc_ranges.get_range_by_name("A"))  # Returns the range object with the name "A"

Example Output

Names of the Ranges:
['A', 'B', 'default'] 

Range object with the name 'A':
id='A' vid='A' ranges=[Range(startip=IPv4Address('233.0.0.0'), endip=IPv4Address('233.255.255.255'))] utilization=Utilization(percentage=0, total=16777216, used=1)

Code Example 2: Create a new Multicast Pool

staged_b_range = allocation_pools_config.create_multicast_range(
    name="B", start_ip="234.0.0.0", end_ip="234.255.255.254"
)

allocation_pools_config.add_multicast_range(staged_b_range)

Code Example 3: Extend a pool with a range

b_range = allocation_pools_config.get_multicast_range_by_name("B")
b_range.add_ip_range(start_ip="236.0.0.1", end_ip="236.0.0.2")
print(allocation_pools_config.update_multicast_range(b_range))
print(b_range)

Example Output

available_ranges=['A', 'B', 'default']
id='B' vid='B' ranges=[Range(startip=IPv4Address('234.0.0.0'), endip=IPv4Address('234.255.255.254')), Range(startip=IPv4Address('236.0.0.1'), endip=IPv4Address('236.0.0.2'))] utilization=Utilization(percentage=0, total=16777215, used=0)

Code Example 4: Remove a range from a pool

b_range = allocation_pools_config.get_multicast_range_by_name("B")
print(f"\nBefore Removal:\n{b_range.ranges}")
b_range.remove_range(1)
print(f"\nAfter Removal:\n{b_range.ranges}")
print(allocation_pools_config.update_multicast_range(b_range))

Example Output

Before Removal:
[Range(startip=IPv4Address('234.0.0.0'), endip=IPv4Address('234.255.255.254')), Range(startip=IPv4Address('236.0.0.1'), endip=IPv4Address('236.0.0.2'))]

After Removal:
[Range(startip=IPv4Address('234.0.0.0'), endip=IPv4Address('234.255.255.254'))]
available_ranges=['A', 'B', 'default']

Code Example 5: Delete a pool

# Can be done either by range name or the range object itself
allocation_pools_config.remove_multicast_range("B")

Code Example 6: Use Information to validate a vertex configuration

# The implementation of Inspect-Topology GUI allows to set invalid multicast pools.
# => Tip: Use Information to validate a vertex configuration
from videoipath_automation_tool.apps.topology.model.n_graph_elements.topology_codec_vertex import nPoolId

allocation_pools_config = app.preferences.system_configuration.allocation_pools
mc_pools_list = allocation_pools_config.get_multicast_ranges().available_ranges

print(f"Available Pools: {mc_pools_list}")

topology_device = app.topology.get_device(
    device_id="device11"
)  # example SNP with invalid pool on "ProcA S1 P1 IP Output Audio 6"
for codec_vertex in topology_device.configuration.codec_vertices:
    if (
        type(codec_vertex.mainDstIp) == nPoolId
    ):  # <= Pool is used for mainDstIp (Connection Defaults-> Multicast Address -> poolId)
        if codec_vertex.mainDstIp.poolId not in mc_pools_list:
            print(f"Vertex {codec_vertex.id} has invalid multicast MAIN Pool! {codec_vertex.mainDstIp}")
            # e.g. Vertex device11.1.206S has invalid multicast MAIN Pool! type='nPoolId' poolId='C'
    if type(codec_vertex.spareDstIp) == nPoolId:
        if codec_vertex.spareDstIp.poolId not in mc_pools_list:
            print(f"Vertex {codec_vertex.id} has invalid multicast SPARE Pool! {codec_vertex.spareDstIp}")

Example Output

Vertex device11.1.206S has invalid multicast MAIN Pool! type='nPoolId' poolId='C'