Skip to content

feat: allow to manage display_order value for building block definiti…#218

Draft
j0g3sc wants to merge 3 commits into
mainfrom
feature/building-block-definition-IO-order
Draft

feat: allow to manage display_order value for building block definiti…#218
j0g3sc wants to merge 3 commits into
mainfrom
feature/building-block-definition-IO-order

Conversation

@j0g3sc

@j0g3sc j0g3sc commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

…on I/O without affecting the calculated hash for change detection

CU-86cabn76y


Summary

Added a manageable display_order field to building block definition version inputs and outputs.

Implementation:

Client
DisplayOrder int64 with json:"displayOrder,omitempty" on both MeshBuildingBlockDefinitionInput and MeshBuildingBlockDefinitionOutput.

Schema
display_order Int64Attribute on inputs and outputs, Optional + Computed + Default(0) — the Default is what keeps re-plans clean given the backend returns 0 when unset.

Content hash
stripped to 0 before hashing, so reordering never changes content_hash or forces a new version

Released immutability
displayOrdersDiffer guard in Update — needed because display_order is outside the hash, so this restores the "released versions are immutable" behavior with a clear error.

Mock
mirrors input→output display_order for manual BBDs.


⚠️ depends on meshfed-api released with https://github.com/meshcloud/meshfed-release/pull/10263

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

📊 Test Coverage

Scope Coverage
Unit tests (mock client) 74.8%
Combined (unit + acceptance) 80.4% — ❌ acceptance failed

Acceptance tests failed (advisory — the job runs against the last merged meshfed-release backend, so a change needing a companion backend PR fails here until that backend merges; the real gate is meshfed-release's terraform-provider-acceptance job).

Uncovered functions (combined run)
github.com/meshcloud/terraform-provider-meshstack/client/api_key_permissions.go:225:							AllApiKeyPermissions					0.0%
github.com/meshcloud/terraform-provider-meshstack/client/buildingblock.go:97:								Delete							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/client.go:48:									NewApiTokenAuthorization				0.0%
github.com/meshcloud/terraform-provider-meshstack/client/internal/logging.go:27:							Debug							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/internal/logging.go:31:							Info							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/internal/logging.go:35:							Warn							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/internal/retry.go:228:								Close							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/internal/retry.go:249:								Write							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/project_group_binding.go:27:							Read							0.0%
github.com/meshcloud/terraform-provider-meshstack/client/project_group_binding.go:31:							Create							0.0%

Combined with go tool covdata merge over the unit and acceptance coverage data. The acceptance suite runs ./internal/provider against the live backend; coverage is attributed across all packages (-coverpkg=./...).

…on I/O without affecting the calculated hash for change detection

CU-86cabn76y
@j0g3sc j0g3sc force-pushed the feature/building-block-definition-IO-order branch from 5321918 to 49e6c12 Compare July 3, 2026 19:41
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

⚠️ Acceptance tests failed on the latest run. This is advisory and does not block merge — the job runs against the last merged meshfed-release backend images. If this change needs a companion backend change, validate the pair via meshfed-release's terraform-provider-acceptance job; otherwise this is a regression to fix.

🔗 View the failing acceptance job

@j0g3sc j0g3sc requested a review from grubmeshi July 3, 2026 19:48

@grubmeshi grubmeshi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have a look at my proposal of implementing it differently. I think only addressing this inside the resource is not enough and it must be handled inside versionContentHash itself.

return result
}

func displayOrdersDiffer(a, b client.MeshBuildingBlockDefinitionVersionSpec) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

f: hm, that's not quite the correct way of addressing this IMHO. the versionContentHash already has a part where it sets fields to constant/zero values.

My proposal would be instead of adding this function (remove it), address it entirely at this place. Loop over inputs/ouputs and set displayOrder to 0 no matter what the DTO sent, making the hash stable against any changes in there.

It might require making the DisplayOrder a *int64. I'm not sure of map entries only get ignored by our hashing algo if it's a nil pointer or also if it's a zero value (0 in case for int64)

Comment on lines +197 to +198
MarkdownDescription: "Numeric value controlling the display ordering of this output in meshPanel. " +
"Used only for arranging outputs; it does not affect the version's content hash. Defaults to `0` when omitted.",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

d: sounds a bit AI sloppy (also fix likewise for input above), maybe:

Suggested change
MarkdownDescription: "Numeric value controlling the display ordering of this output in meshPanel. " +
"Used only for arranging outputs; it does not affect the version's content hash. Defaults to `0` when omitted.",
MarkdownDescription: "Controls the display ordering of this output in meshStack UI. " +
"It does not affect the version's content hash. Defaults to `0` when omitted. Values can be non-sequential to support groups, such as `01`, `02`, `03`, ..., `10`, `11`, `12`, ..., across all inputs. Duplicate values are resolved by alphanumeric sorting of keys as a fallback.",

also, is meshPanel the official product name? I'd have called it "meshStack UI" 🤔

…nd checks. Include BB definition version input and output displayOrder field into hashsum calculation as they cannot be changed on released versions.
@j0g3sc j0g3sc force-pushed the feature/building-block-definition-IO-order branch from d7eec02 to 816cdbc Compare July 6, 2026 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants