Skip to content

Migrate from a concatenated pseudo pool ID - #866

Merged
gabriel-samfira merged 1 commit into
cloudbase:mainfrom
gabriel-samfira:attempt-fix-for-scaleset-id
Sep 4, 2026
Merged

Migrate from a concatenated pseudo pool ID#866
gabriel-samfira merged 1 commit into
cloudbase:mainfrom
gabriel-samfira:attempt-fix-for-scaleset-id

Conversation

@gabriel-samfira

@gabriel-samfira gabriel-samfira commented Sep 4, 2026

Copy link
Copy Markdown
Member

This change migrates from a pseudo pool ID composed of the entity ID and the name of the scale set, to a stable ID computed from the entity ID and the internal scaleset ID as an UUID V5.

Both the entity ID and the internal scaleset ID are immutable. The UUID V5 will always be 36 characters long, regardless of the input data used to compute it.

The downside of this change is that we now need to do two ListInstance() provider calls to list both instances tagged with the old shape of the ID and the new shape. Internally we record whether or not ListInstances() returned an empty list. If empty, we don't have instances in the provider for a scale set, so on each subsequent list, we only do one call.

So in theory at least, we should only be abusing the IaaS API only as long as there are still old runners tagged with the old shape.

Note: once you migrate to a version that contains this commit, you will no longer be able to migrate back without losing track of runners in the IaaS.

This change migrates from a pseudo pool ID composed of the entity ID and
the name of the scale set, to a stable ID computed from the entity ID
and the internal scaleset ID as an UUID V5.

Both the entity ID and the internal scaleset ID are immutable. The UUID
V5 will always be 36 characters long, regardless of the input data used
to compute it.

The downside of this change is that we now need to do two ListInstance()
provider calls to list both instances tagged with the old shape of the
ID and the new shape. Internally we record whether or not ListInstances()
returned an empty list. If empty, we don't have instances in the provider
for a scale set, so on each subsequent list, we only do one call.

So in theory at least, we should only be abusing the IaaS API only as
long as there are still old runners tagged with the old shape.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
@gabriel-samfira
gabriel-samfira force-pushed the attempt-fix-for-scaleset-id branch from 0484dc1 to fb659ad Compare September 4, 2026 10:47

@cbartz cbartz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM.

Thank you so much for addressing this issue.

We could mention in the PR description that rollback of the GARM version will not be safe (when new runners are created with the new release and folks switch back to the one before), so we can mention this in the release notes.

Once this is merged, I'll test it and we can close cloudbase/garm-provider-openstack#34 afterwards.

@gabriel-samfira
gabriel-samfira merged commit e03045f into cloudbase:main Sep 4, 2026
5 checks passed
@gabriel-samfira
gabriel-samfira deleted the attempt-fix-for-scaleset-id branch September 4, 2026 12:59
@gabriel-samfira

Copy link
Copy Markdown
Member Author

@cbartz thanks! Description was updated and merged. Feel free to test and let me know if it works for you.

cbartz added a commit to canonical/github-runner-operators that referenced this pull request Sep 4, 2026
GARM tagged OpenStack instances with a pseudo pool ID built from the
scale set name plus the entity UUID (50 fixed characters). A scale set
name over 10 characters pushed the garm-pool-id server tag past Nova's
60-character limit, failing every instance creation
(cloudbase/garm-provider-openstack#34).

Bump the pinned GARM commit to the merge of upstream cloudbase/garm#866,
which derives the pool ID as a fixed-length UUIDv5 from the entity ID
and the scale set's internal database ID instead. The tag is now a
constant 49 characters regardless of scale set name.

Claude-Session: https://claude.ai/code/session_01XRYMKHaYKSKYbvg7WfAMVC
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