Skip to content

Add arm64 MicroOVN support#833

Merged
ahmad-can merged 9 commits into
canonical:mainfrom
ahmad-can:feat/dpu-arm64-microovn-deploy
Jul 21, 2026
Merged

Add arm64 MicroOVN support#833
ahmad-can merged 9 commits into
canonical:mainfrom
ahmad-can:feat/dpu-arm64-microovn-deploy

Conversation

@ahmad-can

@ahmad-can ahmad-can commented Jun 18, 2026

Copy link
Copy Markdown

Summary

Adds support for deploying the microovn-arm64 charm on ARM64 DPU nodes. Sunbeam now detects arm64 nodes and deploys the arm64 MicroOVN application with the correct Juju constraints.

Changes

  • Detect arm64 DPU nodes from clusterd/OVN metadata
  • Deploy microovn-arm64 as a separate Juju application for arm64 nodes
  • Apply arch=arm64 when deploying arm64 MicroOVN machines
  • Keep amd64 and arm64 MicroOVN machine lists separate in Terraform tfvars
  • Wait for both microovn and microovn-arm64 when both are present
  • Update optional integrations and reapply logic for the arm64 MicroOVN app
  • Update MAAS deployment logic to select the arm64 MicroOVN app for arm64 nodes
  • Add/update unit tests for arm64 deployment and readiness handling

Links

Jira card: OPEN-4508

image image

@hmlanigan
hmlanigan requested review from gboutry and hmlanigan June 30, 2026 18:33

@hmlanigan hmlanigan left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

How can I verify this change works in the real world, not only in unit tests?

@hmlanigan
hmlanigan self-requested a review July 6, 2026 17:24

@hmlanigan hmlanigan left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

A few questions and suggestions

Comment thread cloud/etc/deploy-microovn/main.tf Outdated
}

resource "juju_application" "microovn_arm64" {
count = length(var.microovn_arm64_machine_ids) > 0 ? 1 : 0

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

question: why is this count instead of units?

suggestion: 1 : 0 should be 1 : null

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

count is a terraform meta-argument, unit is a Juju provider attribute inside a juju_application, and count must be a whole number (0, 1, 2, …). null is not valid for count.

Comment thread cloud/etc/deploy-microovn/main.tf Outdated
Comment thread cloud/etc/deploy-microovn/main.tf Outdated
Comment thread sunbeam-python/sunbeam/core/ovn.py Outdated
@ahmad-can
ahmad-can requested a review from hmlanigan July 15, 2026 11:36
@ahmad-can

Copy link
Copy Markdown
Author

@hmlanigan @gboutry please review, thanks

@gboutry gboutry 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.

This is overall fine to me.

We'll need to sort out the role-distributor situation still.

The part that is more worrisome to me, but not necessarily this PR's concern, is how do we actually manage MicroOVN upgrade over multiple applications?

}
}

resource "juju_integration" "role-distributor-microovn" {

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.

WHy are we dropping this integration?

We should have the integration to all microovn apps

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Restored ✅

@ahmad-can
ahmad-can requested a review from gboutry July 17, 2026 12:35
@ahmad-can

Copy link
Copy Markdown
Author

How can I verify this change works in the real world, not only in unit tests?

When we have a DPU based cluster hardware then we can add functional test in acceptance suite. Currently its not feasible.

Comment thread sunbeam-python/sunbeam/steps/microovn.py Outdated
Comment on lines +450 to +464
try:
self.update_status(context, "Removing units")
for application, units in self.units_to_remove_by_app.items():
for unit in units:
LOG.debug("Removing unit %s from application %s", unit, application)
self.jhelper.remove_unit(application, unit, self.model)
self.update_status(context, "Waiting for units to be removed")
self.jhelper.wait_units_gone(
list(units), self.model, self.get_unit_timeout()
)
self.jhelper.wait_application_ready(
application,
self.model,
accepted_status=["active", "unknown"],
timeout=self.get_unit_timeout(),

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.

question: What happens to the terraform state in this instance?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Fixed.

drop the redundant ARM64_APPLICATION constant.
@ahmad-can
ahmad-can requested a review from gboutry July 20, 2026 12:00
@ahmad-can
ahmad-can merged commit fc5ad79 into canonical:main Jul 21, 2026
6 checks passed
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.

3 participants