Skip to content

connector_type choice list is duplicated in dwdm and patch_panel with no way to share it #87

Open

Description

@lancamat1

Context. extensions/dwdm/dwdm.yml and extensions/patch_panel/patch_panel.yml each
carry a byte-identical 28-choice connector_type Dropdown. The two have already drifted
once (one side went optional, the other did not). Infrahub 1.11.0 cannot share a choice
list across extension files without a shared generic in a common ancestor, and there is no
edge to inherit along: extensions/dwdm depends on extensions/sfp,
extensions/patch_panel on base only.

Per ruling R6 the review takes the cheap half now and defers the real fix. Landed in #75:
the three choices that a stale 4096-char FIXME had commented out are restored in both
files (urm_p4, urm_p8, splice), and both lists carry a sync note:

extensions/dwdm/dwdm.yml:25-27
      # NOTE: this choice list is duplicated in extensions/patch_panel and the two must be
      # kept in sync. Infrahub cannot share a choice list across extension files without a
      # shared generic in a common ancestor, which is a base-tier change.

(and the mirror of it at extensions/patch_panel/patch_panel.yml:25-27).

What this asks for. Introduce a shared generic, e.g. DcimGenericConnectorInterface
carrying connector_type, in a common ancestor both extensions can inherit from, and
delete both duplicated lists plus their sync notes. The reason this was not done in #75:
the only common ancestor available is base/dcim.yml, so the change puts a 28-choice
fibre-connector enum into the base schema every user loads whether or not they own a patch
panel. That is a base-tier addition justified by two extensions, and it should be decided
on its own rather than riding in on a consistency cleanup. The two alternatives considered
and rejected: leave duplicated with no note (they drift again), or make one extension
depend on the other (couples two unrelated extensions and forces DWDM kinds on anyone
modelling a copper patch panel).

Origin: pass-1 review of #75, packet CONN-02, ruling R6.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions