Skip to content

feat: create clusters service control plane in backend - #4821

Merged
openshift-merge-bot[bot] merged 1 commit into
mainfrom
jagray/ARO-24824-async-install
Jul 8, 2026
Merged

openshift-merge-bot[bot] merged 1 commit into
mainfrom
jagray/ARO-24824-async-install

Conversation

@JakobGray

@JakobGray Jakob Gray (JakobGray) commented Apr 9, 2026

Copy link
Copy Markdown
Collaborator

What

Move CS cluster creation out of OperationClusterCreate into a dedicated
ClusterClusterServiceCreate controller. The new controller waits for
ControlPlaneDesiredVersion to resolve the install version, creates the CS
cluster (or reuses one matched by Azure metadata), and persists
ClusterServiceID on the cluster document.

OperationClusterCreate now polls CS provisioning status via that stored ID
instead of operation.InternalID. BuildCSCluster prefers the resolved
DesiredVersion from ServiceProviderCluster when building the CS cluster.

Async cluster installation will not take affect until cluster creation
is removed from the frontend.

Why

The clusters service control plane is currently created synchronously during the create flow and uses hard coded versions derived from the customer desired version. By moving to an asynchronous approach we reduce create time and have clusters service deployment managed in the background. This will also allow us time to lookup the desired version from Cincinnati.

Testing

Includes unit tests. Integration and end-to-end testing with the controller functional is done in #5709.

Special notes for your reviewer

@openshift-ci

openshift-ci Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

Manyanda Chitimbo (machi1990) added a commit to machi1990/ARO-HCP that referenced this pull request Apr 13, 2026
This also bumps it for 4.19 as it is still around.

This is interim bump until Azure#4821 is merged that will allow us to automatically pick the latest
Comment thread frontend/pkg/frontend/cluster.go Outdated
Comment thread frontend/pkg/frontend/cluster.go Outdated
Comment thread frontend/pkg/frontend/cluster.go Outdated
Comment thread backend/pkg/app/backend.go Outdated
Comment thread internal/ocm/convert.go

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.

Did an initial review, left some comments.

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.

Jakob Gray (@JakobGray) I see that some changes to allow the cluster id to be missing are in here; let's sync those with the changes in #4752 as well

@mbarnes Matthew Barnes (mbarnes) 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.

In order for the frontend and backend images to stay compatible with a +/-1 version skew, this probably needs to be split into multiple pull requests.

Consider if we introduce this as is but the frontend and backend images don't get deployed simultaneously for some reason. We could potentially be in a situation where neither the frontend nor backend pods are making the CS call for cluster creation.

The first pull request should introduce the new backend controller but leave in place the CS call in the frontend. So the new controller will initially be dormant.

Once that's fully deployed, a second pull request can remove the CS call in the frontend, at which point the backend controller will take over.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD dd1bc6e and 2 for PR HEAD 668c9ce in total

@miguelsorianod

Copy link
Copy Markdown
Collaborator

/lgtm

@openshift-ci openshift-ci Bot added the lgtm label Jul 6, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD b7792c4 and 2 for PR HEAD e4d3fdd in total

@JakobGray

Copy link
Copy Markdown
Collaborator Author

/retest-required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD aff7964 and 1 for PR HEAD e4d3fdd in total

@JakobGray

Copy link
Copy Markdown
Collaborator Author

/retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 7655f98 and 0 for PR HEAD e4d3fdd in total

Move CS cluster creation out of OperationClusterCreate into a dedicated
ClusterClusterServiceCreate controller. The new controller waits for
ControlPlaneDesiredVersion to resolve the install version, creates the CS
cluster (or reuses one matched by Azure metadata), and persists
ClusterServiceID on the cluster document.

OperationClusterCreate now polls CS provisioning status via that stored ID
instead of operation.InternalID. BuildCSCluster prefers the resolved
DesiredVersion from ServiceProviderCluster when building the CS cluster.

Async cluster installation will not take affect until cluster creation
is removed from the frontend.
Copilot AI review requested due to automatic review settings July 8, 2026 07:47
@openshift-ci openshift-ci Bot removed the lgtm label Jul 8, 2026
@miguelsorianod

Copy link
Copy Markdown
Collaborator

rebased solving conflicts

@miguelsorianod

Copy link
Copy Markdown
Collaborator

/lgtm

@openshift-ci openshift-ci Bot added the lgtm label Jul 8, 2026
@openshift-ci

openshift-ci Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JakobGray, miguelsorianod

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copilot AI 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.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.

Comment on lines +342 to +345
func (c *operationClusterCreate) shouldReconcileOperationAndResourceStatus(cluster *api.HCPOpenShiftCluster) bool {
return cluster.ServiceProviderProperties.DeletionTimestamp == nil &&
cluster.ServiceProviderProperties.ClusterServiceID != nil
}
Comment on lines +119 to +122
subscription, err := c.subscriptionLister.Get(ctx, key.SubscriptionID)
if err != nil {
return utils.TrackError(err)
}
@miguelsorianod

Copy link
Copy Markdown
Collaborator

/retest

1 similar comment
@miguelsorianod

Copy link
Copy Markdown
Collaborator

/retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 7b1cd7e and 2 for PR HEAD a86a465 in total

@openshift-ci

openshift-ci Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Jakob Gray (@JakobGray): The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/cspr c331d21 link true /test cspr
ci/prow/images-push c331d21 link true /test images-push

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@JakobGray

Copy link
Copy Markdown
Collaborator Author

/retest-required

@openshift-merge-bot
openshift-merge-bot Bot merged commit 50e62e1 into main Jul 8, 2026
17 checks passed
@openshift-merge-bot
openshift-merge-bot Bot deleted the jagray/ARO-24824-async-install branch July 8, 2026 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants