Feature s390x multiarch support#12214
Conversation
|
Congratulations on your first Pull Request and welcome to the Apache CloudStack community! If you have any issues or are unsure about any anything please check our Contribution Guide (https://github.com/apache/cloudstack/blob/main/CONTRIBUTING.md)
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #12214 +/- ##
============================================
+ Coverage 3.58% 17.46% +13.88%
- Complexity 0 15528 +15528
============================================
Files 445 5913 +5468
Lines 37552 529410 +491858
Branches 6914 64685 +57771
============================================
+ Hits 1347 92475 +91128
- Misses 36039 426513 +390474
- Partials 166 10422 +10256
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR adds multi-architecture support for IBM Z (s390x) to Apache CloudStack, enabling key components to be built and run on both x86_64 and s390x architectures. The implementation enables cross-architecture interoperability between x86_64 management servers and s390x agents.
Key Changes:
- Added s390x as a supported CPU architecture alongside existing x86_64 and aarch64 support
- Updated UI components to include s390x in architecture selection dropdowns
- Modified KVM hypervisor code to handle s390x-specific requirements (ACPI/SMBIOS exclusions)
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
ui/src/views/infra/zone/ZoneWizardAddResources.vue |
Adds s390x architecture option to zone wizard |
ui/src/views/infra/ClusterUpdate.vue |
Adds s390x architecture option to cluster update UI |
ui/src/utils/plugins.js |
Adds s390x to global CPU architecture types utility |
ui/src/components/view/DeployVMFromBackup.vue |
Adds s390x architecture option to VM deployment |
plugins/integrations/kubernetes-service/.../ListKubernetesSupportedVersionsCmd.java |
Updates API documentation to include s390x |
plugins/integrations/kubernetes-service/.../AddKubernetesSupportedVersionCmd.java |
Updates API documentation to include s390x |
plugins/hypervisors/kvm/src/test/java/.../LibvirtComputingResourceTest.java |
Adds conditional test logic for s390x ACPI feature |
plugins/hypervisors/kvm/src/main/java/.../LibvirtVMDef.java |
Excludes SMBIOS mode for s390x architecture |
api/src/test/java/com/cloud/cpu/CPUTest.java |
Adds test coverage for s390x CPU architecture |
api/src/main/java/.../template/RegisterTemplateCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../template/ListTemplatesCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../template/GetUploadParamsForTemplateCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../template/CreateTemplateCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../iso/RegisterIsoCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../iso/ListIsosCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../cluster/UpdateClusterCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../cluster/AddClusterCmd.java |
Updates API documentation to include s390x |
api/src/main/java/.../BaseUpdateTemplateOrIsoCmd.java |
Updates API documentation to include s390x |
api/src/main/java/com/cloud/cpu/CPU.java |
Adds s390x to CPUArch enum |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
shwstppr
left a comment
There was a problem hiding this comment.
code looks good. Some suggestions. Copilot comments on UI consistency make sense
@blueorangutan package
| } | ||
| } | ||
| guestDef.append("<smbios mode='sysinfo'/>\n"); | ||
| if (!(_arch != null && _arch.equals("s390x"))) { |
There was a problem hiding this comment.
| if (!(_arch != null && _arch.equals("s390x"))) { | |
| if (!CPU.CPUArch.s390x.getType().equalsIgnoreCase(_arch)) { |
| assertNodeExists(domainDoc, "/domain/features/pae"); | ||
| assertNodeExists(domainDoc, "/domain/features/apic"); | ||
| assertNodeExists(domainDoc, "/domain/features/acpi"); | ||
| if (!"s390x".equals(System.getProperty("os.arch"))) { |
There was a problem hiding this comment.
| if (!"s390x".equals(System.getProperty("os.arch"))) { | |
| if (!CPU.CPUArch.s390x.getType().equalsIgnoreCase(System.getProperty("os.arch"))) { |
|
@blueorangutan package |
|
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 15974 |
279c6a6 to
6fd6f8e
Compare
Signed-off-by: Niyam Siwach <niyam@ibm.com> Signed-off-by: Viddya K <viddya.k@ibm.com>
6fd6f8e to
1dcf314
Compare
|
LGTM, great to see support for a new architecture @viddya673 |
|
@blueorangutan test |
|
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
|
[SF] Trillian test result (tid-15025)
|
|
Awesome work, congrats on your first merged pull request! |
|
@viddya673, will you be maintaining a regression suite on a s390 to make sure no regression creeps in from other code? |
|
Yes — we’re working on adding GitHub Actions CI for s390x, now that it’s supported. This is currently a work in progress. |
Signed-off-by: Niyam Siwach <niyam@ibm.com> Signed-off-by: Viddya K <viddya.k@ibm.com> Co-authored-by: root <root@c32379v1.fyre.ibm.com>
Description
This PR adds multi-architecture support for IBM Z (s390x) to Apache CloudStack. The updates enable key CloudStack components to be built and run on both x86_64 (Intel/AMD) and s390x.
The implementation has been tested using s390x KVM hosts with full cross-architecture interoperability:
x86_64 Management Server <=> s390x Agent
Compatibility and functionality have been validated across the following distributions:
• RHEL
• SLES
• Ubuntu
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
Screenshots (if appropriate):
How Has This Been Tested?
How did you try to break this feature and the system with this change?