Skip to content

Refactor: Modularize ApiResponseHelper#createUsageResponse#13490

Open
PrashantBhanage wants to merge 11 commits into
apache:mainfrom
PrashantBhanage:fix-11635-refactor-usage
Open

Refactor: Modularize ApiResponseHelper#createUsageResponse#13490
PrashantBhanage wants to merge 11 commits into
apache:mainfrom
PrashantBhanage:fix-11635-refactor-usage

Conversation

@PrashantBhanage

@PrashantBhanage PrashantBhanage commented Jun 25, 2026

Copy link
Copy Markdown

Fixes #11635

Description

This PR addresses the technical debt in ApiResponseHelper#createUsageResponse(Usage) by modularizing the 530-line method.

  • Extracted the 500+ line switch/if-else block into a main dispatcher method populateUsageTypeSpecificDetails.
  • Created 18 individual private helper methods for each specific UsageType to improve maintainability and readability.
  • Introduced a UsageResourceDetails container class to safely manage and return resourceId and resourceType state for tag lookups.
  • Verified zero business logic changes; strictly structural refactoring.

Additional Changes

  • Added JUnit Jupiter, JUnit Vintage, and mockito-junit-jupiter test dependencies to server/pom.xml to support JUnit 5 tests.
  • Migrated ApiResponseHelperTest from JUnit 4 to JUnit 5 and added unit tests for the 18 extracted helper methods.
  • Fixed sonar-check.yml end-of-file formatting (pre-commit hook).
  • Fixed indentation and added proper java.security.cert imports in handleCertificateResponse.

Types of changes

  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • Test (unit or integration test code)

How Has This Been Tested?

  • All 41 unit tests pass locally via mvn -pl server -Dtest=ApiResponseHelperTest test
  • Full server test suite passes: 3256 tests, 0 failures
  • Checkstyle passes with 0 violations
  • Packaging verified on el8, el9, el10, debian, suse15

Fixes apache#11635

- Extracted the 500+ line switch/if-else block into a main dispatcher method `populateUsageTypeSpecificDetails`.
- Created 18 individual private helper methods for each specific `UsageType` to improve maintainability and readability.
- Introduced a `UsageResourceDetails` container class to safely manage and return `resourceId` and `resourceType` state for tag lookups.
- Verified zero business logic changes; strictly structural refactoring.
@boring-cyborg

boring-cyborg Bot commented Jun 25, 2026

Copy link
Copy Markdown

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)
Here are some useful points:

@sureshanaparti

Copy link
Copy Markdown
Contributor

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

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

@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 3.41%. Comparing base (06aebb6) to head (a9ebdd2).
⚠️ Report is 129 commits behind head on main.

❗ There is a different number of reports uploaded between BASE (06aebb6) and HEAD (a9ebdd2). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (06aebb6) HEAD (a9ebdd2)
unittests 1 0
Additional details and impacted files
@@              Coverage Diff              @@
##               main   #13490       +/-   ##
=============================================
- Coverage     18.94%    3.41%   -15.54%     
=============================================
  Files          6192      487     -5705     
  Lines        556361    41867   -514494     
  Branches      67908     7912    -59996     
=============================================
- Hits         105407     1429   -103978     
+ Misses       439383    40238   -399145     
+ Partials      11571      200    -11371     
Flag Coverage Δ
uitests 3.41% <ø> (-0.11%) ⬇️
unittests ?

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.

@blueorangutan

Copy link
Copy Markdown

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

@PrashantBhanage

Copy link
Copy Markdown
Author

Added unit tests for all 18 extracted UsageType helper methods to address the coverage concern. Also added the required JUnit Jupiter and mockito-junit-jupiter test dependencies to server/pom.xml. All 41 tests pass locally.

@blueorangutan

Copy link
Copy Markdown

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

@PrashantBhanage PrashantBhanage left a comment

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.

I don't know where the problem is.

@DaanHoogland

Copy link
Copy Markdown
Contributor

I don't know where the problem is.

what problem are you talking about, @PrashantBhanage ?

I only see an integration test failure which seems unrelated.

@PrashantBhanage

Copy link
Copy Markdown
Author

I don't know where the problem is.

what problem are you talking about, @PrashantBhanage ?

I only see an integration test failure which seems unrelated.

Got it, thanks! I raised #13516 for the flaky test separately. The refactor itself should be good.

@DaanHoogland

Copy link
Copy Markdown
Contributor

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

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

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

This PR refactors ApiResponseHelper#createUsageResponse(Usage) by extracting usage-type-specific logic into a dispatcher (populateUsageTypeSpecificDetails) plus multiple private helper methods, introducing a small container (UsageResourceDetails) to carry resourceId/resourceType for tag lookups.

Changes:

  • Modularized usage-response population into dedicated helper methods keyed by UsageTypes.
  • Updated ApiResponseHelperTest to JUnit 5 + Mockito Jupiter and added focused tests for several usage-type helpers.
  • Added JUnit Jupiter / Vintage and Mockito Jupiter test dependencies to the server module POM.

Reviewed changes

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

File Description
server/src/main/java/com/cloud/api/ApiResponseHelper.java Extracts usage-type logic into helper methods and centralizes tag lookup via UsageResourceDetails.
server/src/test/java/com/cloud/api/ApiResponseHelperTest.java Migrates to JUnit 5/Mockito Jupiter and adds unit tests for the new helper methods via reflection.
server/pom.xml Adds JUnit 5 (Jupiter + Vintage) and Mockito Jupiter dependencies to support the test migration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
Comment on lines 4504 to +4506
if (tmpl != null) {
usageRecResponse.setUsageId(tmpl.getUuid());
resourceId = tmpl.getId();
}
//Template/ISO Size
usageRecResponse.setSize(usageRecord.getSize());
if (usageRecord.getUsageType() == UsageTypes.ISO) {
usageRecResponse.setVirtualSize(usageRecord.getSize());
resourceType = ResourceObjectType.ISO;
} else {
usageRecResponse.setVirtualSize(usageRecord.getVirtualSize());
resourceType = ResourceObjectType.Template;
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
if (usageRecord.getUsageType() == UsageTypes.TEMPLATE) {
builder.append("Template usage");
} else if (usageRecord.getUsageType() == UsageTypes.ISO) {
builder.append("ISO usage");
}
if (tmpl != null) {
builder.append(" for ").append(tmpl.getName()).append(" (").append(tmpl.getUuid()).append(") ")
.append("with size ").append(toHumanReadableSize(usageRecord.getSize())).append(" and virtual size ").append(toHumanReadableSize(usageRecord.getVirtualSize()));
}
usageRecResponse.setDescription(builder.toString());
builder.append(" for ").append(tmpl.getName()).append(" (").append(tmpl.getUuid()).append(") ")
.append("with size ").append(toHumanReadableSize(usageRecord.getSize())).append(" and virtual size ").append(toHumanReadableSize(usageRecord.getVirtualSize()));
Comment on lines 4527 to +4529
if (snap != null) {
usageRecResponse.setUsageId(snap.getUuid());
resourceId = snap.getId();
}
//Snapshot Size
usageRecResponse.setSize(usageRecord.getSize());
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Snapshot usage ");
if (snap != null) {
builder.append("for ").append(snap.getName()).append(" (").append(snap.getUuid()).append(") ")
.append("with size ").append(toHumanReadableSize(usageRecord.getSize()));
}
usageRecResponse.setDescription(builder.toString());
builder.append("for ").append(snap.getName()).append(" (").append(snap.getUuid()).append(") ")
.append("with size ").append(toHumanReadableSize(usageRecord.getSize()));
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java
@blueorangutan

Copy link
Copy Markdown

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

Test Result Time (s) Test File

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@PrashantBhanage

Copy link
Copy Markdown
Author

Applied all the Copilot suggestions, null checks for svcOffering, nullable Long values, and removed the unused variable.

@PrashantBhanage

Copy link
Copy Markdown
Author

Fixed the build, replaced the internal X509CertImpl with standard Java API and removed the unused imports that Copilot introduced.

@PrashantBhanage

Copy link
Copy Markdown
Author

I just pushed a quick fix to add the missing EOF newline in ApiResponseHelperTest.java, so the pre-commit check should be green now.

Also, just wanted to give a heads-up that the UI Build and Sonar JaCoCo failures look unrelated to my Java changes. The UI test seems to be timing out on a Vue router test (Status.spec.js), and Sonar is just throwing a 403 permission error right at the end when trying to drop a PR comment.

Let me know if there's anything else I need to tweak!

@apache apache deleted a comment from blueorangutan Jul 13, 2026
@apache apache deleted a comment from blueorangutan Jul 13, 2026
@blueorangutan

Copy link
Copy Markdown

@DaanHoogland 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 18553

@PrashantBhanage

Copy link
Copy Markdown
Author

It should be good now!

@blueorangutan

Copy link
Copy Markdown

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

@DaanHoogland

Copy link
Copy Markdown
Contributor

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

@DaanHoogland 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-16594)
Environment: kvm-ol8 (x2), zone: Advanced Networking with Mgmt server ol8
Total time taken: 74092 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr13490-t16594-kvm-ol8.zip
Smoke tests completed. 146 look OK, 10 have errors, 0 did not run
Only failed and skipped tests results shown below:

Test Result Time (s) Test File
ContextSuite context=TestNASBackupAndRecovery>:setup Error 0.00 test_backup_recovery_nas.py
ContextSuite context=TestDeployVMsInParallel>:setup Error 0.00 test_deploy_vms_in_parallel.py
ContextSuite context=TestConsoleEndpoint>:setup Error 0.00 test_console_endpoint.py
test_03_verify_libvirt_attach_disk Error 3.37 test_deploy_virtio_scsi_vm.py
test_04_verify_guest_lspci Failure 40.49 test_deploy_virtio_scsi_vm.py
test_05_change_vm_ostype_restart Failure 10.19 test_deploy_virtio_scsi_vm.py
test_06_verify_guest_lspci_again Failure 40.53 test_deploy_virtio_scsi_vm.py
ContextSuite context=TestInternalLb>:setup Error 0.00 test_internal_lb.py
test_02_deploy_vm_with_extraconfig_kvm Error 1.42 test_deploy_vm_extra_config_data.py
test_03_update_vm_with_extraconfig_kvm Error 1.40 test_deploy_vm_extra_config_data.py
ContextSuite context=TestDeployVMFromISO>:setup Error 0.00 test_deploy_vm_iso.py
test_03_create_vpc_domain_vpc_offering Error 13.14 test_domain_vpc_offerings.py
test_04_validate_vpc_offering_conserve_mode_disabled Error 1518.29 test_domain_vpc_offerings.py
test_02_upgrade_kubernetes_cluster Failure 10.92 test_kubernetes_clusters.py
test_03_deploy_and_scale_kubernetes_cluster Failure 6.63 test_kubernetes_clusters.py
test_04_autoscale_kubernetes_cluster Failure 9.74 test_kubernetes_clusters.py
test_05_basic_lifecycle_kubernetes_cluster Failure 6.61 test_kubernetes_clusters.py
test_06_delete_kubernetes_cluster Failure 7.67 test_kubernetes_clusters.py
test_08_upgrade_kubernetes_ha_cluster Failure 8.11 test_kubernetes_clusters.py
test_10_vpc_tier_kubernetes_cluster Error 7.95 test_kubernetes_clusters.py
test_11_test_unmanaged_cluster_lifecycle Error 3.82 test_kubernetes_clusters.py
test_12_test_deploy_cluster_different_offerings_per_node_type Failure 9.78 test_kubernetes_clusters.py
test_05_list_volumes_isrecursive Failure 0.06 test_list_volumes.py
test_07_list_volumes_listall Failure 0.05 test_list_volumes.py

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

Nit: this "Refactor" PR also carries a .github/workflows/sonar-check.yml change and a server/pom.xml dependency bump (junit-jupiter/vintage/mockito-jupiter), plus a full JUnit4→JUnit5 migration of ApiResponseHelperTest. Worth calling out in the description since none of that is "modularize createUsageResponse".

Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
Comment thread server/src/main/java/com/cloud/api/ApiResponseHelper.java Outdated
return resourceDetails;
}

private UsageResourceDetails populateNetworkOfferingUsageResponse(Usage usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat, VMInstanceVO vmInstance) {

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.

Nit: this method (and populateVpnUsersUsageResponse, populateVolumeSecondaryUsageResponse, populateBucketUsageResponse below) just returns new UsageResourceDetails() directly, while the other populate* methods declare a local resourceDetails, mutate it, and return that. Minor inconsistency in the extraction pattern.

@PrashantBhanage

Copy link
Copy Markdown
Author

@Damans227 Fixed the indentation on handleCertificateResponse, added proper imports for java.security.cert classes instead of using fully-qualified names inline. Will also update the PR description to mention the pom.xml dependency additions and JUnit 5 migration.

@DaanHoogland

Copy link
Copy Markdown
Contributor

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@DaanHoogland 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 18658

@DaanHoogland

Copy link
Copy Markdown
Contributor

@blueorangutan test

@DaanHoogland

Copy link
Copy Markdown
Contributor

thanks @PrashantBhanage , one more, can you rebase the PR to the 4.22 LTS branch?

@blueorangutan

Copy link
Copy Markdown

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

@PrashantBhanage

Copy link
Copy Markdown
Author

@DaanHoogland I have opened the 4.22 LTS backport PR here: [https://github.com//pull/13695]

Note: I intentionally excluded the JUnit 5 test migration from the backport to avoid framework conflicts with the stable 4.22 testing architecture, but the core backend refactor and the .toString() bug fix are included.

@DaanHoogland

Copy link
Copy Markdown
Contributor

Note: I intentionally excluded the JUnit 5 test migration from the backport to avoid framework conflicts with the stable 4.22 testing architecture, but the core backend refactor and the .toString() bug fix are included.

ok, that would be an argument to go for this version and to abandon #13695

@blueorangutan

Copy link
Copy Markdown

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

Test Result Time (s) Test File
ContextSuite context=TestMetrics>:setup Error 0.00 test_metrics_api.py
test_01_native_to_native_network_migration Error 11.59 test_migration.py
test_02_native_to_native_vpc_migration Error 7.90 test_migration.py
test_nic_secondaryip_add_remove Error 1515.48 test_multipleips_per_nic.py
test_01_nic Error 51.67 test_nic.py
ContextSuite context=TestNestedVirtualization>:setup Error 0.00 test_nested_virtualization.py
ContextSuite context=TestNetworkACL>:setup Error 0.00 test_network_acl.py
test_04_dhcp_dns_userdata Error 9.32 test_network_extension_namespace.py
test_05_isolated_network_full_lifecycle Error 9.43 test_network_extension_namespace.py
test_06_vpc_multi_tier_and_restart Error 13.58 test_network_extension_namespace.py
test_07_vpc_network_acl Error 18.94 test_network_extension_namespace.py
test_08_custom_action_policy_based_routing Error 8.12 test_network_extension_namespace.py
test_09_vpc_source_nat_ip_update Error 13.57 test_network_extension_namespace.py
test_10_vpc_custom_action_policy_based_routing Error 11.43 test_network_extension_namespace.py
test_11_ipv6_dualstack_isolated_network Error 8.36 test_network_extension_namespace.py
ContextSuite context=TestIpv6Network>:setup Error 0.00 test_network_ipv6.py
test_03_network_operations_on_created_vm_of_otheruser Error 2.81 test_network_permissions.py
test_03_network_operations_on_created_vm_of_otheruser Error 2.81 test_network_permissions.py
test_04_deploy_vm_for_other_user_and_test_vm_operations Failure 1.78 test_network_permissions.py
ContextSuite context=TestNetworkPermissions>:teardown Error 0.80 test_network_permissions.py
test_delete_account Error 1515.01 test_network.py
test_delete_network_while_vm_on_it Error 1.18 test_network.py
test_deploy_vm_l2network Error 1.19 test_network.py
test_l2network_restart Error 2.31 test_network.py
ContextSuite context=TestPortForwarding>:setup Error 3.50 test_network.py
ContextSuite context=TestPublicIP>:setup Error 5.00 test_network.py
test_reboot_router Failure 0.07 test_network.py
test_releaseIP Error 2.63 test_network.py
test_releaseIP_using_IP Error 2.53 test_network.py
ContextSuite context=TestRouterRules>:setup Error 2.61 test_network.py
test_01_deployVMInSharedNetwork Failure 1.80 test_network.py
test_02_verifyRouterIpAfterNetworkRestart Failure 1.08 test_network.py
test_03_destroySharedNetwork Failure 1.09 test_network.py
ContextSuite context=TestSharedNetwork>:teardown Error 2.20 test_network.py
ContextSuite context=TestSharedNetworkWithConfigDrive>:setup Error 1517.22 test_network.py
ContextSuite context=TestAdapterTypeForNic>:setup Error 0.00 test_nic_adapter_type.py
ContextSuite context=TestNonStrictAffinityGroups>:setup Error 0.00 test_nonstrict_affinity_group.py
ContextSuite context=TestIsolatedNetworksPasswdServer>:setup Error 0.00 test_password_server.py
test_01_isolated_persistent_network Error 4.80 test_persistent_network.py
test_03_deploy_and_destroy_VM_and_verify_network_resources_persist Failure 2.62 test_persistent_network.py
test_03_deploy_and_destroy_VM_and_verify_network_resources_persist Error 2.63 test_persistent_network.py
ContextSuite context=TestL2PersistentNetworks>:teardown Error 2.69 test_persistent_network.py
ContextSuite context=TestPortForwardingRules>:setup Error 0.00 test_portforwardingrules.py
test_01_add_primary_storage_disabled_host Error 36.06 test_primary_storage.py
test_01_primary_storage_nfs Error 0.19 test_primary_storage.py
ContextSuite context=TestStorageTags>:setup Error 0.33 test_primary_storage.py
test_01_primary_storage_scope_change Error 0.13 test_primary_storage_scope.py
ContextSuite context=TestPrivateGwACL>:setup Error 0.00 test_privategw_acl.py
ContextSuite context=TestProjectSuspendActivate>:setup Error 1524.85 test_projects.py
test_01_purge_expunged_api_vm_start_date Error 3.96 test_purge_expunged_vms.py
test_02_purge_expunged_api_vm_end_date Error 2.59 test_purge_expunged_vms.py
test_03_purge_expunged_api_vm_start_end_date Error 3.46 test_purge_expunged_vms.py
test_04_purge_expunged_api_vm_no_date Error 3.34 test_purge_expunged_vms.py
test_05_purge_expunged_vm_service_offering Error 1.96 test_purge_expunged_vms.py
test_06_purge_expunged_vm_background_task Error 347.22 test_purge_expunged_vms.py
test_CRUD_operations_userdata Error 1517.92 test_register_userdata.py
test_deploy_vm_with_registered_userdata Error 5.00 test_register_userdata.py
test_deploy_vm_with_registered_userdata_with_override_policy_allow Error 5.02 test_register_userdata.py
test_deploy_vm_with_registered_userdata_with_override_policy_append Error 4.96 test_register_userdata.py
test_deploy_vm_with_registered_userdata_with_override_policy_deny Error 4.80 test_register_userdata.py
test_deploy_vm_with_registered_userdata_with_params Error 5.49 test_register_userdata.py
test_link_and_unlink_userdata_to_template Error 4.82 test_register_userdata.py
test_user_userdata_crud Error 9.14 test_register_userdata.py
ContextSuite context=TestResetVmOnReboot>:setup Error 0.00 test_reset_vm_on_reboot.py
ContextSuite context=TestSnapshotRootDisk>:setup Error 0.00 test_snapshots.py
ContextSuite context=TestRAMCPUResourceAccounting>:setup Error 0.00 test_resource_accounting.py
test_01_ssl_offloading_isolated_network Error 2.53 test_ssl_offloading.py
test_01_ssl_offloading_isolated_network Error 2.53 test_ssl_offloading.py
test_02_ssl_offloading_project_vpc Error 7.71 test_ssl_offloading.py
ContextSuite context=TestResourceNames>:setup Error 0.00 test_resource_names.py
ContextSuite context=TestRestoreVM>:setup Error 0.00 test_restore_vm.py
test_11_destroy_ssvm Failure 916.64 test_ssvm.py
ContextSuite context=TestRouterDHCPHosts>:setup Error 0.00 test_router_dhcphosts.py
ContextSuite context=TestRouterDHCPOpts>:setup Error 0.00 test_router_dhcphosts.py
ContextSuite context=TestRouterDns>:setup Error 0.00 test_router_dns.py
ContextSuite context=TestSharedFSLifecycle>:setup Error 0.00 test_sharedfs_lifecycle.py
ContextSuite context=TestRouterDnsService>:setup Error 0.00 test_router_dnsservice.py
ContextSuite context=TestSetSourceNatIp>:setup Error 0.00 test_set_sourcenat.py
ContextSuite context=TestRouterIpTablesPolicies>:setup Error 0.00 test_routers_iptables_default_policy.py
ContextSuite context=TestVPCIpTablesPolicies>:setup Error 0.00 test_routers_iptables_default_policy.py
ContextSuite context=TestIsolatedNetworks>:setup Error 0.00 test_routers_network_ops.py
ContextSuite context=TestRedundantIsolateNetworks>:setup Error 0.00 test_routers_network_ops.py
ContextSuite context=TestRouterServices>:setup Error 0.00 test_routers.py
test_01_sys_vm_start Failure 180.74 test_secondary_storage.py
ContextSuite context=TestCpuCapServiceOfferings>:setup Error 0.00 test_service_offerings.py
ContextSuite context=TestServiceOfferings>:setup Error 0.26 test_service_offerings.py
test_1_userdata_on_ssvm Failure 916.20 test_systemvm_userdata.py
test_04_deploy_vnf_appliance Error 314.40 test_vnf_templates.py
ContextSuite context=TestVPCConserveModeRules>:setup Error 0.00 test_vpc_conserve_mode.py
test_01_verify_ipv6_vpc Failure 63.60 test_vpc_ipv6.py
ContextSuite context=TestVPCRedundancy>:setup Error 0.00 test_vpc_redundant.py
ContextSuite context=TestVPCNics>:setup Error 0.00 test_vpc_router_nics.py
ContextSuite context=TestRVPCSite2SiteVpn>:setup Error 0.00 test_vpc_vpn.py
ContextSuite context=TestVPCSite2SiteVPNMultipleOptions>:setup Error 0.00 test_vpc_vpn.py
ContextSuite context=TestVpcRemoteAccessVpn>:setup Error 0.00 test_vpc_vpn.py
ContextSuite context=TestVpcSite2SiteVpn>:setup Error 0.00 test_vpc_vpn.py

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.

ApiResponseHelper#createUsageResponse(Usage) needs to be modularised (530 lines).

7 participants