Skip to content

feature: instance boot group and readiness rules - #13907

Draft
shwstppr wants to merge 29 commits into
apache:mainfrom
shapeblue:feat-boot-group
Draft

feature: instance boot group and readiness rules#13907
shwstppr wants to merge 29 commits into
apache:mainfrom
shapeblue:feat-boot-group

Conversation

@shwstppr

@shwstppr shwstppr commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Description

Feature to add the concept of instance boot group and readiness rules.
Design spec: https://cwiki.apache.org/confluence/spaces/CLOUDSTACK/pages/449282465/Instance+Boot+Group+and+Readiness+Rules
Documentation PR: apache/cloudstack-documentation#677

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • Build/CI
  • Test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

Screenshots (if appropriate):

image

How Has This Been Tested?

How did you try to break this feature and the system with this change?

Feature to add the concept of instance boot group and readiness rules.
Design spec: https://cwiki.apache.org/confluence/spaces/CLOUDSTACK/pages/449282465/Instance+Boot+Group+and+Readiness+Rules

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

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

Adds the “Instance Boot Group” feature (per design spec) across the CloudStack stack, including new API surface, persistence schema, readiness evaluation/checkers, and UI flows to manage members, boot order, and readiness rules.

Changes:

  • Introduces Instance Boot Group core entities (DB tables/views + VO/DAO/query-join) and API commands/responses for CRUD, membership, start/stop/reboot sequencing, and readiness rules.
  • Adds readiness rule execution plumbing (VR-dispatched ping/port checks, KVM guest-agent liveness command/wrapper) and Spring wiring/registries for checker strategy discovery.
  • Adds UI navigation and screens for boot groups (listing/details/members, add/remove members, update boot order, manage/view readiness rules) plus i18n strings and icon wiring.

Reviewed changes

Copilot reviewed 82 out of 83 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
ui/src/views/compute/UpdateInstanceBootGroupMemberOrder.vue Modal to update member boot order.
ui/src/views/compute/InstanceBootGroupMembersTab.vue Members table, actions, readiness display.
ui/src/views/compute/AddInstanceBootGroupMember.vue Modal to add VM/InstanceGroup members.
ui/src/core/lazy_lib/icons_use.js Registers additional Ant icons.
ui/src/config/section/compute.js Adds Instance Boot Group section/config.
ui/src/components/view/ListView.vue Enables quick-view routing for boot groups.
ui/public/locales/en.json Adds i18n labels/messages for feature.
tools/apidoc/gen_toc.py Adds API doc TOC category mapping.
systemvm/debian/opt/cloud/bin/instance_readiness_check.py VR-side helper for ping/port checks.
server/src/main/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml Wires new managers/checkers as Spring beans.
server/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/VrPingChecker.java Readiness checker: VR-dispatched ping.
server/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/PortCheckChecker.java Readiness checker: VR-dispatched TCP port connect.
server/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/InstanceBootGroupReadinessRuleService.java Backend contract for readiness rule mutation/eval.
server/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/GuestAgentLivenessChecker.java Readiness checker: KVM guest-agent liveness.
server/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupMembershipGuard.java Shared eligibility checks for membership.
server/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupManager.java Manager interface for start/stop/reboot orchestration.
server/src/main/java/org/apache/cloudstack/api/query/vo/InstanceBootGroupJoinVO.java Query view entity for boot groups.
server/src/main/java/org/apache/cloudstack/api/query/dao/InstanceBootGroupJoinDaoImpl.java DAO impl for boot group join view.
server/src/main/java/org/apache/cloudstack/api/query/dao/InstanceBootGroupJoinDao.java DAO interface for boot group join view.
server/src/main/java/com/cloud/vm/UserVmManagerImpl.java Hooks membership guard into instance-group adds.
server/src/main/java/com/cloud/api/ApiResponseHelper.java Injects DAOs used for new responses.
plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuCommand.java Adds qemu-guest-agent “guest-ping” constant.
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckGuestAgentLivenessCommandWrapper.java Implements KVM-side liveness check wrapper.
engine/schema/src/main/resources/META-INF/db/views/cloud.instance_boot_group_view.sql Adds DB view for boot group join.
engine/schema/src/main/resources/META-INF/db/schema-42210to42300.sql Adds boot group / member / readiness tables.
engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml Registers new DAOs and join DAO.
engine/schema/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupVO.java Boot group entity VO.
engine/schema/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupReadinessRuleVO.java Readiness rule entity VO.
engine/schema/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupReadinessRuleDetailsVO.java Readiness rule details entity VO.
engine/schema/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupReadinessCheckResultVO.java Cached readiness result entity VO.
engine/schema/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupMemberVO.java Boot group member entity VO.
engine/schema/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupDetailsVO.java Per-boot-group config override entity VO.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessRuleDetailsDaoImpl.java Encrypts/decrypts custom-script detail value.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessRuleDetailsDao.java DAO interface for readiness-rule details.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessRuleDaoImpl.java DAO impl: search/list readiness rules.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessRuleDao.java DAO interface for readiness rules.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessCheckResultDaoImpl.java DAO impl: upsert cached check results.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessCheckResultDao.java DAO interface for cached check results.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupMemberDaoImpl.java DAO impl: membership lookup/listing.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupMemberDao.java DAO interface for membership.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupDetailsDaoImpl.java DAO impl: per-group config overrides.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupDetailsDao.java DAO interface for per-group overrides.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupDaoImpl.java DAO impl: boot group persistence queries.
engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupDao.java DAO interface for boot groups.
core/src/main/resources/META-INF/cloudstack/core/spring-core-registry-core-context.xml Registers readiness checker extension registry.
core/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/InstanceReadinessCheckCommand.java VR query command for ping/port checks.
core/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/InstanceReadinessCheckAnswer.java Parses VR script output into fields.
core/src/main/java/com/cloud/agent/resource/virtualnetwork/VRScripts.java Adds VR script constant for readiness checks.
core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java Executes new readiness command in VR.
core/src/main/java/com/cloud/agent/api/CheckGuestAgentLivenessCommand.java Adds agent command for guest liveness check.
core/src/main/java/com/cloud/agent/api/CheckGuestAgentLivenessAnswer.java Adds agent answer for guest liveness check.
api/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/ReadinessChecker.java Strategy interface for rule evaluation.
api/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/InstanceBootGroupReadinessRule.java API model for readiness rules.
api/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupService.java API service contract for feature.
api/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupMember.java API model for members/readiness mode.
api/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroup.java API model for boot group entity.
api/src/main/java/org/apache/cloudstack/api/response/InstanceBootGroupResponse.java API response for boot group details.
api/src/main/java/org/apache/cloudstack/api/response/InstanceBootGroupReadinessRuleResponse.java API response for readiness rules.
api/src/main/java/org/apache/cloudstack/api/response/InstanceBootGroupMemberResponse.java API response for member listing/readiness.
api/src/main/java/org/apache/cloudstack/api/response/InstanceBootGroupMemberChildResponse.java Child VM response for group members.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/UpdateInstanceBootGroupReadinessRuleCmd.java API cmd: update readiness rule.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/UpdateInstanceBootGroupMemberCmd.java API cmd: update member order.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/UpdateInstanceBootGroupCmd.java API cmd: update boot group.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/StopInstanceBootGroupCmd.java API cmd: stop boot group.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/StartInstanceBootGroupCmd.java API cmd: start boot group.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/RemoveInstanceBootGroupMemberCmd.java API cmd: remove member.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/RebootInstanceBootGroupCmd.java API cmd: reboot boot group.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/ListInstanceBootGroupsCmd.java API cmd: list boot groups.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/ListInstanceBootGroupReadinessRulesCmd.java API cmd: list readiness rules.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/ListInstanceBootGroupMembersCmd.java API cmd: list members (details/readiness/children).
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/DeleteInstanceBootGroupReadinessRuleCmd.java API cmd: delete readiness rule.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/DeleteInstanceBootGroupCmd.java API cmd: delete boot group.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/CreateInstanceBootGroupReadinessRuleCmd.java API cmd: create readiness rule.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/CreateInstanceBootGroupCmd.java API cmd: create boot group.
api/src/main/java/org/apache/cloudstack/api/command/user/bootgroup/AddMemberToInstanceBootGroupCmd.java API cmd: add member.
api/src/main/java/org/apache/cloudstack/api/ApiConstants.java Adds API constant keys used by new APIs.
api/src/main/java/org/apache/cloudstack/api/ApiCommandResourceType.java Adds resource types for new APIs.
api/src/main/java/com/cloud/event/EventTypes.java Adds event types and entity mappings.
Suppressed comments (1)

ui/src/core/lazy_lib/icons_use.js:365

  • VerticalAlignMiddleOutlined is registered twice on the Vue app, which is redundant and can mask issues when refactoring the icon list. Remove the duplicate component registration.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread ui/src/core/lazy_lib/icons_use.js
Comment thread ui/src/views/compute/AddInstanceBootGroupMember.vue
Comment on lines +39 to +43
final Map<String, String> executionDetails = new HashMap<>();
if (getResult() && StringUtils.isNotEmpty(getDetails())) {
final String[] parts = getDetails().split("&&");
if (parts.length >= 3) {
executionDetails.put(STDOUT, parts[0].trim());
@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 77.25740% with 607 lines in your changes missing coverage. Please review.
✅ Project coverage is 20.06%. Comparing base (b7a834b) to head (ac0cea0).

Files with missing lines Patch % Lines
.../vm/bootgroup/InstanceBootGroupApiServiceImpl.java 72.39% 101 Missing and 42 partials ⚠️
...ack/vm/bootgroup/InstanceBootGroupManagerImpl.java 76.36% 62 Missing and 16 partials ⚠️
...oudstack/api/query/vo/InstanceBootGroupJoinVO.java 0.00% 63 Missing ⚠️
...dstack/api/response/InstanceBootGroupResponse.java 2.17% 45 Missing ⚠️
...ess/InstanceBootGroupReadinessRuleManagerImpl.java 89.54% 13 Missing and 24 partials ⚠️
...m/cloud/vm/dao/InstanceBootGroupMemberDaoImpl.java 58.82% 27 Missing and 1 partial ⚠️
...vm/bootgroup/InstanceBootGroupReadinessRuleVO.java 48.07% 26 Missing and 1 partial ⚠️
...e/cloudstack/vm/bootgroup/InstanceBootGroupVO.java 43.47% 25 Missing and 1 partial ⚠️
...sponse/InstanceBootGroupReadinessRuleResponse.java 44.18% 24 Missing ⚠️
...dstack/vm/bootgroup/InstanceBootGroupMemberVO.java 48.64% 18 Missing and 1 partial ⚠️
... and 28 more
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #13907      +/-   ##
============================================
+ Coverage     19.78%   20.06%   +0.27%     
- Complexity    19998    20510     +512     
============================================
  Files          6371     6425      +54     
  Lines        575899   578785    +2886     
  Branches      70495    70814     +319     
============================================
+ Hits         113967   116119    +2152     
- Misses       449501   450105     +604     
- Partials      12431    12561     +130     
Flag Coverage Δ
uitests 3.51% <ø> (-0.02%) ⬇️
unittests 21.36% <77.25%> (+0.29%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Copilot AI review requested due to automatic review settings August 19, 2026 11:32
@apache apache deleted a comment from blueorangutan Aug 19, 2026
@apache apache deleted a comment from blueorangutan Aug 19, 2026

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 82 out of 83 changed files in this pull request and generated no new comments.

Suppressed comments (12)

ui/src/views/compute/UpdateInstanceBootGroupMemberOrder.vue:1

  • a-form's @finish handler is invoked with form values (not a DOM event). As written, handleSubmit will throw when called from @finish because e.preventDefault() is executed on a non-event/undefined. Make handleSubmit tolerant of non-event invocations (e.g., only call preventDefault when present) or split into separate submit handlers for click vs. finish.
    ui/src/views/compute/UpdateInstanceBootGroupMemberOrder.vue:1
  • a-form's @finish handler is invoked with form values (not a DOM event). As written, handleSubmit will throw when called from @finish because e.preventDefault() is executed on a non-event/undefined. Make handleSubmit tolerant of non-event invocations (e.g., only call preventDefault when present) or split into separate submit handlers for click vs. finish.
    ui/src/views/compute/AddInstanceBootGroupMember.vue:1
  • Same issue as the update-order modal: @finish passes form values, not a DOM event, so e.preventDefault() can throw and break submission. Update handleSubmit to safely handle calls from both @finish and button/keyboard events.
    ui/src/views/compute/AddInstanceBootGroupMember.vue:1
  • Same issue as the update-order modal: @finish passes form values, not a DOM event, so e.preventDefault() can throw and break submission. Update handleSubmit to safely handle calls from both @finish and button/keyboard events.
    ui/src/views/compute/AddInstanceBootGroupMember.vue:1
  • The form currently only validates order, so it’s possible to submit without selecting a VM/InstanceGroup, relying on backend errors. Add client-side required validation for virtualmachineid when membertype is VirtualMachine, and for instancegroupid when membertype is InstanceGroup (and consider clearing validation errors when toggling member type).
    ui/src/views/compute/AddInstanceBootGroupMember.vue:1
  • The form currently only validates order, so it’s possible to submit without selecting a VM/InstanceGroup, relying on backend errors. Add client-side required validation for virtualmachineid when membertype is VirtualMachine, and for instancegroupid when membertype is InstanceGroup (and consider clearing validation errors when toggling member type).
    ui/src/views/compute/AddInstanceBootGroupMember.vue:1
  • The form currently only validates order, so it’s possible to submit without selecting a VM/InstanceGroup, relying on backend errors. Add client-side required validation for virtualmachineid when membertype is VirtualMachine, and for instancegroupid when membertype is InstanceGroup (and consider clearing validation errors when toggling member type).
    core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java:1
  • This handler hard-codes _eachTimeout to 60 seconds and ignores the wait set on the command (cmd.setWait(...) is used by the callers to respect an attempt budget). This can cause attempts to exceed the intended budget or time out too early. Use the command’s wait value (or derive _eachTimeout from it) instead of a fixed constant.
    server/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/VrPingChecker.java:1
  • The code casts Answer to InstanceReadinessCheckAnswer without verifying the type or checking answer.getResult(). In mixed-version/upgrade scenarios or when the VR can’t execute the script, the agent may return a different Answer type or a failure response, leading to ClassCastException and breaking readiness evaluation. Guard with instanceof, handle !answer.getResult() explicitly, and surface answer.getDetails() as the error message.
    server/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/PortCheckChecker.java:1
  • Same unsafe cast pattern as VrPingChecker: Answer is cast to InstanceReadinessCheckAnswer without instanceof/getResult() checks. This can crash the checker and abort readiness computation. Add defensive checks and handle failed answers by returning Status.Error with the agent-provided details.
    engine/schema/src/main/java/com/cloud/vm/dao/InstanceBootGroupReadinessCheckResultDaoImpl.java:1
  • This upsert is not atomic: concurrent writers can both observe existing == null and then attempt persist, violating the unique key on (rule_id, vm_id) and causing intermittent failures under parallel readiness evaluation. Wrap this in a transaction with appropriate locking, or implement a DB-level upsert pattern (e.g., try-insert then update on duplicate) so concurrent updates are safe.
    core/src/main/java/org/apache/cloudstack/vm/bootgroup/readiness/InstanceReadinessCheckAnswer.java:1
  • The answer parsing relies on a string delimiter (&&) and throws a runtime exception if the format isn't exactly as expected. Any unexpected script output (including delimiter collisions) will bubble up as an exception and can disrupt readiness evaluation. Consider switching the VR script to emit structured output (e.g., JSON with stdout/stderr/exitcode fields) and make the parser fail-soft (returning exitcode=-1 with a descriptive stderr) rather than throwing.

@github-actions

Copy link
Copy Markdown

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Copilot AI review requested due to automatic review settings August 26, 2026 04:46

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 82 out of 83 changed files in this pull request and generated no new comments.

Suppressed comments (4)

Previously missed (3) — in code that hasn't changed since the last review.

core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java:500

  • InstanceReadinessCheckCommand.setWait(...) is computed from the remaining budget, but this handler hardcodes _eachTimeout to 60s. This makes the command’s per-attempt wait budget ineffective (the VR script execution timeout can exceed the intended budget).
    plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckGuestAgentLivenessCommandWrapper.java:74
  • The wrapper uses a fixed 5s timeout for qemuAgentCommand(...) and ignores command.getWait(), even though the caller sets the command wait from the remaining readiness budget. This can cause false negatives when the readiness attempt budget is higher than 5s.
    server/src/main/java/org/apache/cloudstack/vm/bootgroup/InstanceBootGroupMembershipGuard.java:99
  • validateVmEligibleForGroupMembership only checks the first Instance Group mapping for the VM (currentMappings.get(0)). Since instance_group_vm_map does not enforce one-group-per-VM, a VM can be in multiple instance groups, and this can miss a disqualifying group that is already a boot-group member.

ui/src/views/compute/AddInstanceBootGroupMember.vue:120

  • The form validation only enforces order, so it’s possible to submit without selecting a VM/instance group, which will send an API request missing the required virtualmachineid/instancegroupid parameter.

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@apache apache deleted a comment from blueorangutan Sep 2, 2026
@shwstppr

shwstppr commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@shwstppr a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan

Copy link
Copy Markdown

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 19068

@shwstppr

shwstppr commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

@shwstppr a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests

@blueorangutan

Copy link
Copy Markdown

[SF] Trillian test result (tid-16886)
Environment: kvm-ol8 (x2), zone: Advanced Networking with Mgmt server ol8
Total time taken: 1657 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr13907-t16886-kvm-ol8.zip
Smoke tests completed. 0 look OK, 0 have errors, 157 did not run
Only failed and skipped tests results shown below:

Test Result Time (s) Test File
all_test_2fa Skipped --- test_2fa.py
all_test_account_access Skipped --- test_account_access.py
all_test_accounts Skipped --- test_accounts.py
all_test_affinity_groups_projects Skipped --- test_affinity_groups_projects.py
all_test_affinity_groups Skipped --- test_affinity_groups.py
all_test_annotations Skipped --- test_annotations.py
all_test_async_job Skipped --- test_async_job.py
all_test_attach_multiple_volumes Skipped --- test_attach_multiple_volumes.py
all_test_backup_recovery_dummy Skipped --- test_backup_recovery_dummy.py
all_test_backup_recovery_kboss Skipped --- test_backup_recovery_kboss.py
all_test_backup_recovery_nas Skipped --- test_backup_recovery_nas.py
all_test_backup_recovery_veeam Skipped --- test_backup_recovery_veeam.py
all_test_bucket Skipped --- test_bucket.py
all_test_certauthority_root Skipped --- test_certauthority_root.py
all_test_cluster_drs Skipped --- test_cluster_drs.py
all_test_console_endpoint Skipped --- test_console_endpoint.py
all_test_create_list_domain_account_project Skipped --- test_create_list_domain_account_project.py
all_test_create_network Skipped --- test_create_network.py
all_test_deploy_vgpu_enabled_vm Skipped --- test_deploy_vgpu_enabled_vm.py
all_test_deploy_virtio_scsi_vm Skipped --- test_deploy_virtio_scsi_vm.py
all_test_deploy_vm_extra_config_data Skipped --- test_deploy_vm_extra_config_data.py
all_test_deploy_vm_iso Skipped --- test_deploy_vm_iso.py
all_test_deploy_vm_iso_uefi Skipped --- test_deploy_vm_iso_uefi.py
all_test_deploy_vm_root_resize Skipped --- test_deploy_vm_root_resize.py
all_test_deploy_vms_in_parallel Skipped --- test_deploy_vms_in_parallel.py
all_test_deploy_vms_with_varied_deploymentplanners Skipped --- test_deploy_vms_with_varied_deploymentplanners.py
all_test_deploy_vm_with_userdata Skipped --- test_deploy_vm_with_userdata.py
all_test_diagnostics Skipped --- test_diagnostics.py
all_test_direct_download Skipped --- test_direct_download.py
all_test_disk_offerings Skipped --- test_disk_offerings.py
all_test_disk_provisioning_types Skipped --- test_disk_provisioning_types.py
all_test_dns_framework_powerdns Skipped --- test_dns_framework_powerdns.py
all_test_domain_disk_offerings Skipped --- test_domain_disk_offerings.py
all_test_domain_network_offerings Skipped --- test_domain_network_offerings.py
all_test_domain_service_offerings Skipped --- test_domain_service_offerings.py
all_test_domain_vpc_offerings Skipped --- test_domain_vpc_offerings.py
all_test_dynamicroles Skipped --- test_dynamicroles.py
all_test_enable_account_settings_for_domain Skipped --- test_enable_account_settings_for_domain.py
all_test_enable_role_based_users_in_projects Skipped --- test_enable_role_based_users_in_projects.py
all_test_events_resource Skipped --- test_events_resource.py
all_test_extension_custom_action_lifecycle Skipped --- test_extension_custom_action_lifecycle.py
all_test_extension_custom Skipped --- test_extension_custom.py
all_test_extension_lifecycle Skipped --- test_extension_lifecycle.py
all_test_gateway_on_shared_networks Skipped --- test_gateway_on_shared_networks.py
all_test_global_acls Skipped --- test_global_acls.py
all_test_global_settings Skipped --- test_global_settings.py
all_test_guest_os Skipped --- test_guest_os.py
all_test_guest_vlan_range Skipped --- test_guest_vlan_range.py
all_test_host_control_state Skipped --- test_host_control_state.py
all_test_hostha_simulator Skipped --- test_hostha_simulator.py
all_test_host_ping Skipped --- test_host_ping.py
all_test_host_tags Skipped --- test_host_tags.py
all_test_human_readable_logs Skipped --- test_human_readable_logs.py
all_test_image_store_object_migration Skipped --- test_image_store_object_migration.py
all_test_import_unmanage_volumes Skipped --- test_import_unmanage_volumes.py
all_test_instance_boot_group Skipped --- test_instance_boot_group.py
all_test_internal_lb Skipped --- test_internal_lb.py
all_test_ipv4_routing Skipped --- test_ipv4_routing.py
all_test_ipv6_infra Skipped --- test_ipv6_infra.py
all_test_iso Skipped --- test_iso.py
all_test_kms_lifecycle Skipped --- test_kms_lifecycle.py
all_test_kubernetes_clusters Skipped --- test_kubernetes_clusters.py
all_test_kubernetes_supported_versions Skipped --- test_kubernetes_supported_versions.py
all_test_list_accounts Skipped --- test_list_accounts.py
all_test_list_disk_offerings Skipped --- test_list_disk_offerings.py
all_test_list_domains Skipped --- test_list_domains.py
all_test_list_hosts Skipped --- test_list_hosts.py
all_test_list_ids_parameter Skipped --- test_list_ids_parameter.py
all_test_list_service_offerings Skipped --- test_list_service_offerings.py
all_test_list_storage_pools Skipped --- test_list_storage_pools.py
all_test_list_volumes Skipped --- test_list_volumes.py
all_test_loadbalance Skipped --- test_loadbalance.py
all_test_login Skipped --- test_login.py
all_test_metrics_api Skipped --- test_metrics_api.py
all_test_migration Skipped --- test_migration.py
all_test_ms_maintenance_and_safe_shutdown Skipped --- test_ms_maintenance_and_safe_shutdown.py
all_test_multipleips_per_nic Skipped --- test_multipleips_per_nic.py
all_test_nested_virtualization Skipped --- test_nested_virtualization.py
all_test_network_acl Skipped --- test_network_acl.py
all_test_network_extension_namespace Skipped --- test_network_extension_namespace.py
all_test_network_ipv6 Skipped --- test_network_ipv6.py
all_test_network_permissions Skipped --- test_network_permissions.py
all_test_network Skipped --- test_network.py
all_test_network_traffic_type_api Skipped --- test_network_traffic_type_api.py
all_test_nic_adapter_type Skipped --- test_nic_adapter_type.py
all_test_nic Skipped --- test_nic.py
all_test_non_contigiousvlan Skipped --- test_non_contigiousvlan.py
all_test_nonstrict_affinity_group Skipped --- test_nonstrict_affinity_group.py
all_test_object_stores Skipped --- test_object_stores.py
all_test_outofbandmanagement_nestedplugin Skipped --- test_outofbandmanagement_nestedplugin.py
all_test_outofbandmanagement Skipped --- test_outofbandmanagement.py
all_test_over_provisioning Skipped --- test_over_provisioning.py
all_test_password_server Skipped --- test_password_server.py
all_test_persistent_network Skipped --- test_persistent_network.py
all_test_portable_publicip Skipped --- test_portable_publicip.py
all_test_portforwardingrules Skipped --- test_portforwardingrules.py
all_test_primary_storage Skipped --- test_primary_storage.py
all_test_primary_storage_scope Skipped --- test_primary_storage_scope.py
all_test_privategw_acl_ovs_gre Skipped --- test_privategw_acl_ovs_gre.py
all_test_privategw_acl Skipped --- test_privategw_acl.py
all_test_private_roles Skipped --- test_private_roles.py
all_test_projects Skipped --- test_projects.py
all_test_public_ip_range Skipped --- test_public_ip_range.py
all_test_purge_expunged_vms Skipped --- test_purge_expunged_vms.py
all_test_pvlan Skipped --- test_pvlan.py
all_test_quarantined_ips Skipped --- test_quarantined_ips.py
all_test_regions Skipped --- test_regions.py
all_test_register_userdata Skipped --- test_register_userdata.py
all_test_reset_configuration_settings Skipped --- test_reset_configuration_settings.py
all_test_reset_vm_on_reboot Skipped --- test_reset_vm_on_reboot.py
all_test_resource_accounting Skipped --- test_resource_accounting.py
all_test_resource_detail Skipped --- test_resource_detail.py
all_test_resource_names Skipped --- test_resource_names.py
all_test_restore_vm Skipped --- test_restore_vm.py
all_test_router_dhcphosts Skipped --- test_router_dhcphosts.py
all_test_router_dns Skipped --- test_router_dns.py
all_test_router_dnsservice Skipped --- test_router_dnsservice.py
all_test_routers_iptables_default_policy Skipped --- test_routers_iptables_default_policy.py
all_test_routers_network_ops Skipped --- test_routers_network_ops.py
all_test_routers Skipped --- test_routers.py
all_test_scale_vm Skipped --- test_scale_vm.py
all_test_secondary_storage Skipped --- test_secondary_storage.py
all_test_service_offerings Skipped --- test_service_offerings.py
all_test_set_sourcenat Skipped --- test_set_sourcenat.py
all_test_sharedfs_lifecycle Skipped --- test_sharedfs_lifecycle.py
all_test_snapshots Skipped --- test_snapshots.py
all_test_ssl_offloading Skipped --- test_ssl_offloading.py
all_test_ssvm Skipped --- test_ssvm.py
all_test_staticroles Skipped --- test_staticroles.py
all_test_storage_policy Skipped --- test_storage_policy.py
all_test_systemvm_userdata Skipped --- test_systemvm_userdata.py
all_test_templates Skipped --- test_templates.py
all_test_update_security_group Skipped --- test_update_security_group.py
all_test_usage_events Skipped --- test_usage_events.py
all_test_usage Skipped --- test_usage.py
all_test_vm_autoscaling Skipped --- test_vm_autoscaling.py
all_test_vm_deployment_planner Skipped --- test_vm_deployment_planner.py
all_test_vm_life_cycle Skipped --- test_vm_life_cycle.py
all_test_vm_lifecycle_unmanage_import Skipped --- test_vm_lifecycle_unmanage_import.py
all_test_vm_lifecycle_unmanage_kvm_import Skipped --- test_vm_lifecycle_unmanage_kvm_import.py
all_test_vm_lifecycle_with_snapshot_or_volume Skipped --- test_vm_lifecycle_with_snapshot_or_volume.py
all_test_vm_schedule Skipped --- test_vm_schedule.py
all_test_vm_snapshot_kvm Skipped --- test_vm_snapshot_kvm.py
all_test_vm_snapshots Skipped --- test_vm_snapshots.py
all_test_vm_strict_host_tags Skipped --- test_vm_strict_host_tags.py
all_test_vnf_templates Skipped --- test_vnf_templates.py
all_test_volumes Skipped --- test_volumes.py
all_test_vpc_conserve_mode Skipped --- test_vpc_conserve_mode.py
all_test_vpc_firewall_rules Skipped --- test_vpc_firewall_rules.py
all_test_vpc_ipv6 Skipped --- test_vpc_ipv6.py
all_test_vpc_redundant Skipped --- test_vpc_redundant.py
all_test_vpc_router_nics Skipped --- test_vpc_router_nics.py
all_test_vpc_vpn Skipped --- test_vpc_vpn.py
all_test_webhook_delivery Skipped --- test_webhook_delivery.py
all_test_webhook_lifecycle Skipped --- test_webhook_lifecycle.py
all_test_host_maintenance Skipped --- test_host_maintenance.py
all_test_hostha_kvm Skipped --- test_hostha_kvm.py

import org.apache.cloudstack.vm.bootgroup.InstanceBootGroupMember;
import org.apache.cloudstack.vm.bootgroup.InstanceBootGroupService;

@APICommand(name = "addMemberToInstanceBootGroup",

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.

@shwstppr can you update since = ["4.24.0" | "24.0.0"] based on the target release for all the new API cmds here.

@sureshanaparti sureshanaparti Sep 3, 2026

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.

as per the schema upgrade, it's 4.24.0

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'll update 4.24.0, it can be updated once PR for renaming versions is merged

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
@shwstppr

shwstppr commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@shwstppr a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan

Copy link
Copy Markdown

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 19079

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

clgtm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: conflict/waiting

Development

Successfully merging this pull request may close these issues.

6 participants