Skip to content

Extensions Framework & Orchestrate Anything #9752

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 175 commits into
base: main
Choose a base branch
from

Conversation

harikrishna-patnala
Copy link
Contributor

@harikrishna-patnala harikrishna-patnala commented Oct 1, 2024

Description

Apache CloudStack already supports a wide range of hypervisors, including KVM, VMware, and Xen, to provision and manage instances. We are now introducing a new feature or framework that allows seamless integration of "external" provisioning systems into CloudStack. For example, this enables the integration of any baremetal provisioning system, platforms like Proxmox, or even the addition of new hypervisor support through the use of simple scripts.

A design document is made with more details at https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+Extensions+Framework+-++Orchestartor+or+External+Deployment+Integration

Documentation PR: apache/cloudstack-documentation#523

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

Copy link

codecov bot commented Oct 1, 2024

Codecov Report

Attention: Patch coverage is 43.82642% with 2343 lines in your changes missing coverage. Please review.

Project coverage is 16.80%. Comparing base (0bd35a5) to head (39c8b16).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...work/extensions/manager/ExtensionsManagerImpl.java 59.68% 257 Missing and 151 partials ⚠️
...visioner/ExternalEntryPointPayloadProvisioner.java 59.75% 161 Missing and 37 partials ⚠️
...hypervisor/external/resource/ExternalResource.java 9.75% 184 Missing and 1 partial ⚠️
...udstack/agent/manager/ExternalTemplateAdapter.java 21.62% 112 Missing and 4 partials ⚠️
.../external/discoverer/ExternalServerDiscoverer.java 38.15% 90 Missing and 4 partials ⚠️
...loudstack/agent/manager/ExternalServerPlanner.java 0.00% 80 Missing ⚠️
...n/java/com/cloud/vm/VirtualMachineManagerImpl.java 53.41% 51 Missing and 24 partials ⚠️
...n/java/com/cloud/resource/ResourceManagerImpl.java 0.00% 74 Missing ⚠️
...che/cloudstack/api/response/ExtensionResponse.java 0.00% 73 Missing ⚠️
...ck/api/response/ExtensionCustomActionResponse.java 0.00% 72 Missing ⚠️
... and 92 more
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #9752      +/-   ##
============================================
+ Coverage     16.57%   16.80%   +0.22%     
- Complexity    13968    14375     +407     
============================================
  Files          5743     5806      +63     
  Lines        510470   515178    +4708     
  Branches      62074    62649     +575     
============================================
+ Hits          84615    86559    +1944     
- Misses       416393   418838    +2445     
- Partials       9462     9781     +319     
Flag Coverage Δ
uitests 3.84% <ø> (-0.06%) ⬇️
unittests 17.72% <43.82%> (+0.25%) ⬆️

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

☔ View full report in Codecov by Sentry.
📢 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.

@apache apache deleted a comment from blueorangutan Oct 1, 2024
@apache apache deleted a comment from blueorangutan Oct 1, 2024
Copy link

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

@harikrishna-patnala
Copy link
Contributor Author

@blueorangutan package

@blueorangutan
Copy link

@harikrishna-patnala 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.

@blueorangutan
Copy link

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

Copy link
Contributor

@DaanHoogland DaanHoogland left a comment

Choose a reason for hiding this comment

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

@harikrishna-patnala , I noticed I had started reviewing this and abandonned it. I was about half way anf will leave you the comments now. I will revisit after 4.20 is out.

@@ -67,6 +70,9 @@ public class UpdateHostCmd extends BaseCmd {
@Parameter(name = ApiConstants.ANNOTATION, type = CommandType.STRING, description = "Add an annotation to this host", since = "4.11", authorized = {RoleType.Admin})
private String annotation;

@Parameter(name = ApiConstants.EXTERNAL_DETAILS, type = CommandType.MAP, description = "Details in key/value pairs using format externaldetails[i].keyname=keyvalue. Example: externaldetails[0].endpoint.url=urlvalue", since = "4.21.0")
Copy link
Contributor

Choose a reason for hiding this comment

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

details instead of external...

@@ -359,9 +362,21 @@ public Map<String, String> getDetails() {
}
}
}

detailsMap.putAll(getExternalDetails());
Copy link
Contributor

Choose a reason for hiding this comment

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

see? these are just details.

}

public void setDetails(Map<String, String> details) {
_details = details;
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
_details = details;
this.details = details;

} else if (template.getFormat() == ImageFormat.BAREMETAL) {
logger.debug("%s has format [{}]. Skipping ROOT volume [{}] allocation.", template.toString(), ImageFormat.BAREMETAL, rootVolumeName);
} else if (template.getFormat() == ImageFormat.BAREMETAL || template.getFormat() == ImageFormat.EXTERNAL) {
logger.debug(String.format("%s has format [%s]. Skipping ROOT volume [%s] allocation.", template.toString(), template.getFormat(), rootVolumeName));
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
logger.debug(String.format("%s has format [%s]. Skipping ROOT volume [%s] allocation.", template.toString(), template.getFormat(), rootVolumeName));
logger.debug("{} has format [{}]. Skipping ROOT volume [{}] allocation.", template.toString(), template.getFormat(), rootVolumeName);

@sureshanaparti sureshanaparti self-assigned this Nov 13, 2024
@rohityadavcloud
Copy link
Member

@blueorangutan package

@blueorangutan
Copy link

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

@blueorangutan
Copy link

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

@harikrishna-patnala
Copy link
Contributor Author

@DaanHoogland I see many other custom detail parameters in a few other APIs, such as vnfdetails, domaindetails, accountdetails, and a few more.

In this case, I would like to keep this as a separate parameter because these are the only details that are important if the hypervisor type is External. The other parameters are just meant to fit into CloudStack's workflow. The core purpose of this feature is to send these external details to the external provisioner.

Copy link

github-actions bot commented Dec 3, 2024

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

Copy link

github-actions bot commented Dec 3, 2024

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

@blueorangutan
Copy link

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

@blueorangutan
Copy link

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

@shwstppr
Copy link
Contributor

@blueorangutan package

@blueorangutan
Copy link

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

@blueorangutan
Copy link

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

@abh1sar
Copy link
Collaborator

abh1sar commented Jun 25, 2025

@blueorangutan package

@blueorangutan
Copy link

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

@blueorangutan
Copy link

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

@shwstppr
Copy link
Contributor

@blueorangutan test

@blueorangutan
Copy link

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

shwstppr added 2 commits June 26, 2025 15:41
Signed-off-by: Abhishek Kumar <[email protected]>
Signed-off-by: Abhishek Kumar <[email protected]>
@shwstppr
Copy link
Contributor

@blueorangutan package

@blueorangutan
Copy link

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

shwstppr added a commit to shapeblue/cloudstack-documentation that referenced this pull request Jun 27, 2025
@blueorangutan
Copy link

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

@shwstppr
Copy link
Contributor

@blueorangutan test

@blueorangutan
Copy link

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

@blueorangutan
Copy link

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

Test Result Time (s) Test File
test_01_extension_vm_lifecycle Error 3604.80 test_extension_custom.py
test_02_run_custom_action Error 3664.48 test_extension_custom.py
test_03_run_invalid_custom_action Error 3634.78 test_extension_custom.py
ContextSuite context=TestExtensions>:teardown Error 3636.08 test_extension_custom.py
test_09_extension_deploy_vm Error 3609.01 test_extension_lifecycle.py
test_09_extension_deploy_vm Error 3609.26 test_extension_lifecycle.py
test_oobm_issue_power_cycle Error 2.33 test_outofbandmanagement_nestedplugin.py
test_oobm_issue_power_off Error 2.30 test_outofbandmanagement_nestedplugin.py
test_oobm_issue_power_on Error 1.29 test_outofbandmanagement_nestedplugin.py
test_oobm_issue_power_reset Error 2.35 test_outofbandmanagement_nestedplugin.py
test_oobm_issue_power_soft Error 2.33 test_outofbandmanagement_nestedplugin.py
test_oobm_issue_power_status Error 2.34 test_outofbandmanagement_nestedplugin.py
test_02_L2_persistent_network Failure 102.63 test_persistent_network.py
test_03_deploy_and_destroy_VM_and_verify_network_resources_persist Failure 150.19 test_persistent_network.py
test_01_webhook_deliveries Failure 10.49 test_webhook_delivery.py

@blueorangutan
Copy link

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

Test Result Time (s) Test File
test_01_extension_vm_lifecycle Error 3604.02 test_extension_custom.py
test_02_run_custom_action Error 3665.48 test_extension_custom.py
test_03_run_invalid_custom_action Error 3666.17 test_extension_custom.py
ContextSuite context=TestExtensions>:teardown Error 3667.48 test_extension_custom.py
test_09_extension_deploy_vm Error 3670.91 test_extension_lifecycle.py
test_09_extension_deploy_vm Error 3671.09 test_extension_lifecycle.py
test_01_non_strict_host_anti_affinity Failure 139.36 test_nonstrict_affinity_group.py
test_02_non_strict_host_affinity Error 84.80 test_nonstrict_affinity_group.py
test_02_L2_persistent_network Failure 101.84 test_persistent_network.py
test_03_deploy_and_destroy_VM_and_verify_network_resources_persist Failure 143.78 test_persistent_network.py
test_01_sys_vm_start Failure 0.14 test_secondary_storage.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

10 participants