Skip to content

Cross-CF org/space filter: dedupe by name when CF=All on Applications, Services, Marketplace walls #5376

Description

@nabramovitz

Narrowed scope of #2629.

Today

Primary walls (Applications, Services, Marketplace) aggregate apps / instances / offerings across all connected CFs. CF / Org / Space dropdowns exist on each wall. When CF = "All", the Org dropdown aggregates orgs across CFs but dedupes by guidseen.set(o.guid, o.name) at src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app/cf-apps-signal-config.service.ts:233 (and equivalents in services / marketplace configs). The predicate matches by guid: if (org && app.orgGuid !== org) return false; at :314.

Result: an org named platform in prod and another named platform in staging appear as two indistinguishable-looking entries in the Org dropdown. Picking one filters to that single CF's org.

What to change

When selectedCnsi === null:

  1. orgOptions and spaceOptions dedupe by name rather than guid (seen.set(o.name, o.name)); option value becomes the name.
  2. Filter predicate matches by name in that mode: app.orgName !== org and app.spaceName !== space instead of guid-equality.
  3. When selectedCnsi !== null, behavior unchanged — pick a CF, see its orgs, filter by guid.

Apply to

  • cf-apps-signal-config.service.ts (Applications wall)
  • cf-service-instances-signal-config.service.ts (Services wall)
  • cf-service-offerings-signal-config.service.ts (Marketplace)

Plus tests covering: All-CF dedupe collapses identical names, single-CF mode unchanged, locked-space-scope unaffected.

Edge cases

  • Case sensitivity — pick a stance (platform vs Platform). Recommend case-insensitive match for permissive behavior.
  • Naming convention divergenceplatform-prod vs platform won't unify; out of scope for this ticket. Document that this fix unifies exact (or normalized) name matches; naming guidance is separate.
  • Whitespace / unicode normalization — match-by-name is fragile to invisible characters; consider a normalized comparison (trim() + normalize('NFC') at minimum).

Scope

Three frontend signal-config services + tests. Half-day estimate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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