DiffoExample.Nbn.ServiceInitializer (DiffoExample v0.3.0)

Copy Markdown View Source

Diffo - TMF Service and Resource Management with a difference

Seeds the standing infrastructure at the Stirling (5STI) point of interconnect for the lawful-intercept demo (#60). Nothing here is a customer service — provisioning a service onto this infrastructure is the enacted journey, see provision_service/3 (used by the livebook and the test).

Ownership reflects the real split:

  • Quokka (an RSP) owns the logical service edge — two NNI Groups (one with 2× 10G NNIs, one with 2× 100G NNIs), each carrying two CVCs.
  • NBN owns the physical access — the on-site NTD at the library and its four UNIs (the NTD's four ports), plus all the places. NBN-owned records carry no rsp_id and are visible to every RSP.

Built bottom-up using the assigner: a CVC takes an S-VLAN from its NNI Group, a UNI takes a port from the NTD; later, provisioning takes a C-VLAN from a chosen CVC. Each instance keys on a fixed UUID (the NBN identifier is the name, not the id) so the seed is idempotent and the demo can address records.

Summary

Functions

CVC ids grouped by the NNI Group that carries them.

NNI Group ids (A = 10G, B = 100G).

NNI ids grouped by their NNI Group — the expected intercept answers.

The on-site NTD's id, and the library LocationPoint it :locates.

Provisions a customer service: lands the given idle uni onto the given cvc by building a new AVC (taking a C-VLAN from the CVC) and a PRI (NBN Ethernet access) that owns the AVC as its :circuit and the UNI as its :port.

Seeds the standing 5STI infrastructure, owned by quokka (logical) and NBN (physical). Idempotent: a sentinel check on NNI Group A short-circuits a re-run. Requires the RSPs and the geo places (5STI, the library LOP) to exist first — call after seed_rsps and Geo.seed.

The four idle UNI ids (the NTD's four ports).

Functions

cvc_ids()

CVC ids grouped by the NNI Group that carries them.

group_ids()

NNI Group ids (A = 10G, B = 100G).

library_lop_id()

nni_ids()

NNI ids grouped by their NNI Group — the expected intercept answers.

ntd_id()

The on-site NTD's id, and the library LocationPoint it :locates.

poi_id()

provision_service(uni, cvc, actor)

Provisions a customer service: lands the given idle uni onto the given cvc by building a new AVC (taking a C-VLAN from the CVC) and a PRI (NBN Ethernet access) that owns the AVC as its :circuit and the UNI as its :port.

This is the RSP's order — the choice of CVC is the RSP balancing load across its service edge, and it determines which NNI Group (and thus which NNIs) the service traverses. Returns the PRI. actor is the owning RSP (e.g. quokka).

seed()

Seeds the standing 5STI infrastructure, owned by quokka (logical) and NBN (physical). Idempotent: a sentinel check on NNI Group A short-circuits a re-run. Requires the RSPs and the geo places (5STI, the library LOP) to exist first — call after seed_rsps and Geo.seed.

uni_ids()

The four idle UNI ids (the NTD's four ports).