Skip to main content

nautobot-app-broadcast

Broadcast domain models for Nautobot: services, multiplex capacity, and (next) signal chains.

Nautobot models networks extremely well and has no vertical for broadcast or media facilities at all. This fills that gap, and does so medium-agnostically — radio and television, and audio, video, RF and data, are all the same shapes. A new domain should add data, not tables.

Status

Early. Capacity models are in; signal chains are next. Not yet published to PyPI.

Models

Model Purpose
BroadcastService A station as the audience receives it — FM/AM/DAB+/DTV/stream
Multiplex A shared carrier: a DAB ensemble or DVB multiplex
MultiplexCarriage One service on one multiplex, at a bitrate and protection level

Why capacity first

Signal chains have to be elicited from people's heads, one conversation at a time. Multiplex capacity is objective and already known, so it can be populated in an afternoon and answer a question most operators cannot answer today: how much of our allocation are we actually using, and does next quarter's line-up fit?

Design decisions

allocated_capacity, not total. A DAB ensemble is 864 Capacity Units, but most broadcasters are tenants on a multiplex rather than its owner. total_capacity is informational; carriage is validated against the portion you hold.

Planned carriage may overcommit — deliberately. Only Active carriage is enforced against the allocation. "Does next quarter fit?" is the question being asked, not an error to block on. Status therefore does the work that branching would, which matters because Nautobot has none.

capacity_cost is entered, not derived. The DAB bitrate-and-protection to Capacity Unit mapping is defined by ETSI EN 300 401 and varies by profile. It is taken from the standard or from the multiplex operator rather than guessed at in code. Protection level is capacity — the same audio bitrate costs more CUs at stronger protection — so the trade-off should be visible, not silently computed.

Separate from Tenant. Tenant means ownership. A service is a thing delivered. Using Tenant for services spends it on the wrong concept and blocks using tenancy for real ownership later.

Not here yet

  • SignalChain — ordered, Device-referencing paths tagged by medium (audio / data / gpio / video / rf), criticality (program vs ancillary), and role (primary / backup). One service has many chains: program audio, RDS, now-playing metadata and GPIO can each take different routes with backups in different directions.
  • Diversity validation — the payoff. Walk primary against backup and report every shared device, rack, location, power feed or circuit. Redundancy that isn't diverse is the failure people don't find out about until it happens. Unknown must report as unknown, never as diverse.
  • REST API, UI views, tables, filters, navigation.

Development

No local dev environment yet. Migrations are generated against a running Nautobot 3.0.11 by putting the package on PYTHONPATH, adding nautobot_broadcast to PLUGINS in a throwaway config, and running makemigrations — a build-time artifact, not a deployment change.

Installing

pip install nautobot-app-broadcast

then add to PLUGINS in nautobot_config.py:

PLUGINS = ["nautobot_broadcast"]

Nautobot apps are Python packages baked into the image — they cannot be installed at runtime — so containerised deployments need this in their image build.

Licence

Apache-2.0 — see LICENSE. Same as Nautobot itself, so it composes freely with the rest of the ecosystem.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nautobot_app_broadcast-0.3.0.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nautobot_app_broadcast-0.3.0-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file nautobot_app_broadcast-0.3.0.tar.gz.

File metadata

  • Download URL: nautobot_app_broadcast-0.3.0.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nautobot_app_broadcast-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4752ccd9c2ab12bc60c6177e9ead1df2673f6e689f1d1aa84c81468611a46c94
MD5 138db8f63a4ab3e43b1563afb9213a19
BLAKE2b-256 4b1d5b89a1b702348414d7c362dec16c71d864a9b0cc0746571cb9ea9b6ec694

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautobot_app_broadcast-0.3.0.tar.gz:

Publisher: release.yml on at-blacknight-projects/nautobot-app-broadcast

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautobot_app_broadcast-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nautobot_app_broadcast-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18a492128d3e37727381b9910ef81bb5854b11f1a2b98c2d56e6b94626f2e5be
MD5 7a08c1ac788a1a0658bd3eec0218fa31
BLAKE2b-256 eefdb38d3e0497972b4bbf4cea2f7d98e4dfdfcd637abc76dc785105de940613

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautobot_app_broadcast-0.3.0-py3-none-any.whl:

Publisher: release.yml on at-blacknight-projects/nautobot-app-broadcast

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page