Skip to content

party and place inheritance via instance DSL #122

@matt-beanland

Description

@matt-beanland

Title: Party inheritance via relationship path in the instances DSL

Description

Currently, when a resource needs to record party ownership it does so explicitly — storing the party's id as an attribute (e.g. rsp_id) and wiring it up manually in a change. This works for a flat ownership model but breaks down when ownership is implicit in the graph topology.
In the NBN domain, an RSP owns NNI Groups directly. Everything beneath that — CVCs, AVCs, NNIs — belongs to the same RSP by virtue of how it relates back through the graph. There is no meaningful sense in which an AVC is independently owned; its ownership is inherited from the NNI Group it terminates at.
The same pattern applies to Place. A resource located at a place that belongs to a party should be able to inherit that party context without redundantly recording it as an attribute.

What we need

The instances DSL should support declaring that a party relationship is inherited through a named relationship path, with the ability to assign a local role that may differ from the role the party holds on the parent. For example:

instances do
  inherit_party :operator, from: :owner, via: :reverse_relationships
end

This would tell diffo that the owning party is resolved by following the given relationship, inheriting the party context from the related resource rather than recording it as a local attribute.

Why it matters

Without this, every resource in a topology must independently store and maintain party ownership — creating redundant data, extra edges or attributes, and a maintenance burden when ownership changes. Inheritance through the graph reflects how ownership actually works in network domains, and keeps the model honest.

This is also relevant to how Place relates to Party — the same inheritance semantics apply wherever party context flows through a relationship rather than being directly asserted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions