Skip to content

Add support to clone existing offerings and update them - #12357

Merged
harikrishna-patnala merged 31 commits into
mainfrom
clone-edit-existing-offerings
Mar 17, 2026
Merged

Add support to clone existing offerings and update them#12357
harikrishna-patnala merged 31 commits into
mainfrom
clone-edit-existing-offerings

Conversation

@Pearl1594

@Pearl1594Pearl1594 commented Dec 31, 2025

Copy link
Copy Markdown
Contributor

Description

This PR adds APIs to clone existing offerings - service, system, network, VPC, backup and update certain parameters of the existing offering.

Doc PR: apache/cloudstack-documentation#630

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):

How Has This Been Tested?

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

@codecov

codecovBot commented Dec 31, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 49.82669% with 579 lines in your changes missing coverage. Please review.
✅ Project coverage is 18.00%. Comparing base (da85858) to head (77ff9e5).
⚠️ Report is 16 commits behind head on main.

Files with missing linesPatch %Lines
...ain/java/com/cloud/network/vpc/VpcManagerImpl.java0.48%205 Missing and 2 partials ⚠️
.../cloud/configuration/ConfigurationManagerImpl.java70.46%102 Missing and 64 partials ⚠️
.../command/admin/network/NetworkOfferingBaseCmd.java29.64%129 Missing and 11 partials ⚠️
...rg/apache/cloudstack/backup/BackupManagerImpl.java51.11%9 Missing and 13 partials ⚠️
...i/command/admin/backup/CloneBackupOfferingCmd.java66.00%17 Missing ⚠️
...i/command/admin/offering/CloneDiskOfferingCmd.java0.00%13 Missing ⚠️
...ack/api/command/admin/vpc/CloneVPCOfferingCmd.java60.00%10 Missing ⚠️
...in/java/com/cloud/server/ManagementServerImpl.java0.00%4 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #12357 +/- ##
============================================
+ Coverage 17.93% 18.00% +0.07% - Complexity 16160 16349 +189 
============================================
Files 5939 5953 +14 Lines 533147 535395 +2248 Branches 65237 65775 +538 ============================================
+ Hits 95607 96403 +796 - Misses 426797 428105 +1308 - Partials 10743 10887 +144 
FlagCoverage Δ
uitests3.54% <ø> (-0.12%)⬇️
unittests19.16% <49.82%> (+0.12%)⬆️

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.

@Pearl1594
Pearl1594force-pushed the clone-edit-existing-offerings branch from 62368f3 to 3787aaaCompareJanuary 6, 2026 22:39
@DaanHooglandDaanHoogland added this to the 4.23.0 milestone Jan 7, 2026
@Pearl1594
Pearl1594force-pushed the clone-edit-existing-offerings branch 2 times, most recently from bb2e90d to 7fd4567CompareJanuary 8, 2026 21:52
@boring-cyborgboring-cyborgBot added component:marvin Python Warning... Python code Ahead! labels Jan 9, 2026
@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.

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.

could you make the new if and for blocks separte methods (with clear names please?

Comment threadui/src/components/offering/ComputeOfferingForm.vue
@Pearl1594
Pearl1594force-pushed the clone-edit-existing-offerings branch 3 times, most recently from 1f5796d to 10333dfCompareJanuary 21, 2026 22:02
@Pearl1594Pearl1594 reopened this Feb 2, 2026
@Pearl1594Pearl1594 reopened this Feb 2, 2026
@weizhouapache
weizhouapache requested review from Copilot and weizhouapache and removed request for ustcweizhouFebruary 3, 2026 15:45

CopilotAI 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 introduces “clone offering” functionality across the CloudStack API and UI, enabling users to clone existing offerings (compute/service, disk, network, VPC, backup) while overriding selected parameters. It also refactors network/VPC service-capability param building into shared UI helpers and wires the new actions into the offerings UI.

Changes:

  • Added new API commands and server implementations for cloning multiple offering types (plus event types and service interfaces).
  • Added new UI clone views (compute/disk/backup shown here) and integrated clone actions into the offerings section config.
  • Refactored network/VPC service-capability parameter construction into a shared composable and extracted disk offering form into a reusable component.

Reviewed changes

Copilot reviewed 41 out of 41 changed files in this pull request and generated 9 comments.

Show a summary per file
FileDescription
ui/src/views/offering/CloneDiskOffering.vueNew UI flow to clone disk offerings using the shared DiskOfferingForm.
ui/src/views/offering/CloneComputeOffering.vueNew UI flow to clone compute/service offerings (includes prefill + submit logic).
ui/src/views/offering/CloneBackupOffering.vueNew UI flow to clone backup offerings (zone/provider offering selection + async job polling).
ui/src/views/offering/AddVpcOffering.vueRefactors VPC service capability param building into a shared helper.
ui/src/views/offering/AddNetworkOffering.vueRefactors network service capability param building into a shared helper.
ui/src/views/offering/AddDiskOffering.vueRefactors disk offering creation to use the new shared DiskOfferingForm component.
ui/src/config/section/offering.jsAdds new “Clone * Offering” actions in the UI offerings sections.
ui/src/composables/useServiceCapabilityParams.jsNew shared helper(s) to build serviceCapability/serviceProvider param sets for network/VPC offerings.
ui/src/components/offering/DiskOfferingForm.vueNew reusable disk offering form component extracted from the previous view.
ui/src/components/CheckBoxSelectPair.vueAdds support for setting a default select value.
ui/public/locales/en.jsonAdds i18n strings for clone offering actions and messages.
server/src/test/java/org/apache/cloudstack/backup/BackupManagerTest.javaAdds tests asserting cloned backup offering domain handling.
server/src/test/java/com/cloud/vpc/MockConfigurationManagerImpl.javaUpdates test mock to support new clone APIs and new base cmd type for network offering creation.
server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.javaAdds tests around reflection helpers and some clone-related scaffolding.
server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.javaImplements backup offering clone behavior and registers the command.
server/src/main/java/com/cloud/server/ManagementServerImpl.javaRegisters new clone commands in management server command list.
server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.javaImplements VPC offering clone logic, including service/provider/capability reconstruction.
api/src/test/java/org/apache/cloudstack/api/command/admin/vpc/CloneVpcOfferingCmdTest.javaAdds unit tests for the new clone VPC offering command.
api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CloneServiceOfferingCmdTest.javaAdds unit tests for the new clone service offering command.
api/src/test/java/org/apache/cloudstack/api/command/admin/network/CloneNetworkOfferingCmdTest.javaAdds unit tests for the new clone network offering command.
api/src/test/java/org/apache/cloudstack/api/command/admin/backup/CloneBackupOfferingCmdTest.javaAdds unit tests for the new clone backup offering command.
api/src/main/java/org/apache/cloudstack/backup/BackupManager.javaAdds cloneBackupOffering to the backup manager interface.
api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.javaAdjusts supported-services behavior for external providers (validation moved server-side).
api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CloneVPCOfferingCmd.javaNew API command for cloning VPC offerings.
api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CloneServiceOfferingCmd.javaNew API command for cloning service offerings.
api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CloneDiskOfferingCmd.javaNew API command for cloning disk offerings.
api/src/main/java/org/apache/cloudstack/api/command/admin/network/NetworkOfferingBaseCmd.javaNew base command consolidating shared network-offering params/logic.
api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.javaRefactors create network offering cmd to extend NetworkOfferingBaseCmd.
api/src/main/java/org/apache/cloudstack/api/command/admin/network/CloneNetworkOfferingCmd.javaNew API command for cloning network offerings.
api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ImportBackupOfferingCmd.javaMakes backupManager protected and annotates domainIds param with since.
api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CloneBackupOfferingCmd.javaNew API command for cloning backup offerings (domainIds resolver support).
api/src/main/java/org/apache/cloudstack/api/ApiConstants.javaAdds SOURCE_OFFERING_ID constant.
api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.javaAdds cloneVPCOffering to VPC provisioning service interface.
api/src/main/java/com/cloud/event/EventTypes.javaAdds new event types for offering/backup offering clone.
api/src/main/java/com/cloud/configuration/ConfigurationService.javaAdds clone methods and generalizes createNetworkOffering to accept the new base cmd.

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

Comment on lines +70 to +73
export default {
name: 'CreateComputeOffering',
mixins: [mixinForm],
components: {

CopilotAIFeb 8, 2026

Copy link

Choose a reason for hiding this comment

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

The component is registered with name 'CreateComputeOffering', but this view is for cloning. This breaks devtools/component identification and may affect caching/keep-alive behavior if other components rely on the name. Rename it to 'CloneComputeOffering' (or another clone-specific name).

Copilot uses AI. Check for mistakes.
Comment on lines +636 to +641
}

params.sourceofferingid = this.resource.id

postAPI('cloneServiceOffering', params).then(json => {
const message = this.isSystem

CopilotAIFeb 8, 2026

Copy link

Choose a reason for hiding this comment

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

this.loading is never set to true before calling postAPI('cloneServiceOffering', ...), so the submit-guard (if (this.loading) return) does not prevent double submits and the UI spinner never activates. Set this.loading = true immediately before the API call (and keep the existing finally that resets it).

Copilot uses AI. Check for mistakes.
Comment threadserver/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java Outdated
Comment on lines +404 to +408
}).then(json => {
this.diskOfferings = json.listdiskofferingsresponse.diskoffering || []
if (this.selectedDiskOfferingId === '') {
this.selectedDiskOfferingId = this.diskOfferings[0].id || ''
}

CopilotAIFeb 8, 2026

Copy link

Choose a reason for hiding this comment

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

this.diskOfferings[0].id will throw if listDiskOfferings returns an empty list. Guard with a length check (or use optional chaining) before reading the first element.

Copilot uses AI. Check for mistakes.
Comment on lines +79 to +85
<a-switch v-model:checked="form.encryptdisk" :checked="encryptdisk" @change="val => { encryptdisk = val }" />
</a-form-item>
<a-form-item name="disksizestrictness" ref="disksizestrictness">
<template #label>
<tooltip-label :title="$t('label.disksizestrictness')" :tooltip="apiParams.disksizestrictness.description" />
</template>
<a-switch v-model:checked="form.disksizestrictness" :checked="disksizestrictness" @change="val => { disksizestrictness = val }" />

CopilotAIFeb 8, 2026

Copy link

Choose a reason for hiding this comment

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

The switch uses both v-model:checked and an explicit :checked bound to a different data property (encryptdisk). This can desynchronize the UI from form.encryptdisk (especially when initialValues sets a non-default). Prefer binding only via v-model:checked and remove the separate :checked/@change state mirror.

Suggested change
<a-switchv-model:checked="form.encryptdisk":checked="encryptdisk" @change="val=> { encryptdisk=val }"/>
</a-form-item>
<a-form-item name="disksizestrictness" ref="disksizestrictness">
<template #label>
<tooltip-label :title="$t('label.disksizestrictness')" :tooltip="apiParams.disksizestrictness.description" />
</template>
<a-switchv-model:checked="form.disksizestrictness":checked="disksizestrictness" @change="val=> { disksizestrictness=val }"/>
<a-switchv-model:checked="form.encryptdisk" />
</a-form-item>
<a-form-item name="disksizestrictness" ref="disksizestrictness">
<template #label>
<tooltip-label :title="$t('label.disksizestrictness')" :tooltip="apiParams.disksizestrictness.description" />
</template>
<a-switchv-model:checked="form.disksizestrictness" />

Copilot uses AI. Check for mistakes.
Comment on lines +79 to +85
<a-switch v-model:checked="form.encryptdisk" :checked="encryptdisk" @change="val => { encryptdisk = val }" />
</a-form-item>
<a-form-item name="disksizestrictness" ref="disksizestrictness">
<template #label>
<tooltip-label :title="$t('label.disksizestrictness')" :tooltip="apiParams.disksizestrictness.description" />
</template>
<a-switch v-model:checked="form.disksizestrictness" :checked="disksizestrictness" @change="val => { disksizestrictness = val }" />

CopilotAIFeb 8, 2026

Copy link

Choose a reason for hiding this comment

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

Same issue as encrypt switch: v-model:checked plus explicit :checked backed by disksizestrictness can cause the displayed value to diverge from form.disksizestrictness / initialValues. Bind the switch to a single source of truth (the form model).

Suggested change
<a-switchv-model:checked="form.encryptdisk":checked="encryptdisk" @change="val=> { encryptdisk=val }"/>
</a-form-item>
<a-form-item name="disksizestrictness" ref="disksizestrictness">
<template #label>
<tooltip-label :title="$t('label.disksizestrictness')" :tooltip="apiParams.disksizestrictness.description" />
</template>
<a-switchv-model:checked="form.disksizestrictness":checked="disksizestrictness" @change="val=> { disksizestrictness=val }"/>
<a-switchv-model:checked="form.encryptdisk" />
</a-form-item>
<a-form-item name="disksizestrictness" ref="disksizestrictness">
<template #label>
<tooltip-label :title="$t('label.disksizestrictness')" :tooltip="apiParams.disksizestrictness.description" />
</template>
<a-switchv-model:checked="form.disksizestrictness" />

Copilot uses AI. Check for mistakes.
Comment threadui/src/components/offering/DiskOfferingForm.vue Outdated
@Pearl1594

Copy link
Copy Markdown
ContributorAuthor

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@Pearl1594 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 16963

@Pearl1594

Copy link
Copy Markdown
ContributorAuthor

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

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

@blueorangutan

Copy link
Copy Markdown

[SF] Trillian Build Failed (tid-15538)

@kiranchavala

Copy link
Copy Markdown
Member

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

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

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate FailedQuality Gate failed

Failed conditions
37.1% Coverage on New Code (required ≥ 40%)

See analysis details on SonarQube Cloud

@blueorangutan

Copy link
Copy Markdown

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

TestResultTime (s)Test File
test_LoginApiDomainError7.54test_accounts.py
ContextSuite context=TestListIdsParams>:teardownError1.14test_list_ids_parameter.py
test_01_snapshot_root_diskError5.87test_snapshots.py
test_02_list_snapshots_with_removed_data_storeError46.59test_snapshots.py
test_02_list_snapshots_with_removed_data_storeError46.59test_snapshots.py
ContextSuite context=TestSnapshotStandaloneBackup>:teardownError28.69test_snapshots.py
test_01_snapshot_usageError21.58test_usage.py
test_01_vpn_usageError1.09test_usage.py

@kiranchavala

Copy link
Copy Markdown
Member

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@kiranchavala 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 16997

@kiranchavala

Copy link
Copy Markdown
Member

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

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

@kiranchavalakiranchavala left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM Tested manually

Test Case ExecutionResult
Test clone offering for compute offeringPass
Test clone offering on system offeringsPass
Test clone offering on disk offeringsPass
Test clone offering on backup offeringPass
Test clone offering on network offeringsPass
Test clone offering on vpc offeringsPass
Test copy of service ( compute offering ) from domainadmin user rolePass
Test copy of service ( diskoffering ) from domainadmin user rolePass

@DaanHoogland

Copy link
Copy Markdown
Contributor

@Pearl1594 , is this ready for merge?

@Pearl1594

Pearl1594 commented Mar 5, 2026

Copy link
Copy Markdown
ContributorAuthor

@DaanHoogland just waiting for test results and comments.. Probably would be ready by early next week.

@blueorangutan

Copy link
Copy Markdown

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

TestResultTime (s)Test File
test_LoginApiDomainError7.43test_accounts.py
ContextSuite context=TestListIdsParams>:teardownError1.13test_list_ids_parameter.py
test_01_snapshot_root_diskError5.01test_snapshots.py
test_02_list_snapshots_with_removed_data_storeError46.84test_snapshots.py
test_02_list_snapshots_with_removed_data_storeError46.85test_snapshots.py
ContextSuite context=TestSnapshotStandaloneBackup>:teardownError27.69test_snapshots.py
test_01_snapshot_usageError22.73test_usage.py
test_01_vpn_usageError1.10test_usage.py

@harikrishna-patnala

Copy link
Copy Markdown
Member

@Pearl1594 there are some test failures and extra simulator test run failures than the main branch health check PR. Can you please check and confirm if they are unrelated or not.

@Pearl1594

Copy link
Copy Markdown
ContributorAuthor

@harikrishna-patnala the smoke test failures seem to be happening upstream on other PRs too: #12680 (comment)

I have initiated re-run of the ci tests, will keep an eye

@Pearl1594

Copy link
Copy Markdown
ContributorAuthor

@harikrishna-patnala the smoke test and ci test failures are unrelated to the PR as far as I've checked.

@harikrishna-patnala
harikrishna-patnala marked this pull request as ready for review March 17, 2026 06:30
@harikrishna-patnala
harikrishna-patnala merged commit 3bd5410 into mainMar 17, 2026
56 of 86 checks passed
@harikrishna-patnala
harikrishna-patnala deleted the clone-edit-existing-offerings branch March 17, 2026 06:31
owsferraro pushed a commit to owsferraro/cloudstack that referenced this pull request Mar 25, 2026
* Add support to clone existing offerings and update them
* add support for vpc & backup offerings to be cloned
* fix capability list and mapping of params
* Add support to clone network and vpc offering with the right parameters
* make fields non mandatory for clone offerings APIs
* Add UI support for cloning Compute and System Service offerings
* remove unnecessary changes
* fix license and pre-ccommit issues
* Add UI support to clone disk and network offering
* vpc & backup offering clone api
* add unit tests
* fix pre-commit checks
* increase test coverage
* combine add/clone disk/compute offering forms
* update license
* fix unit tests
* fix test failures
* fix test failure - unnecessary stubbings
* pre-commit check failure
* add recently added domain id for bkp offering to be inherited in clone operation
* extract common code wrt service capability in network & vpc offering in add/clone operations
* add some checks to prevent networkmode change when provider is nsx/netris from the source networkmode
* address copilot comments
* address comments
* combine check
* use appropriate zoneId during clone bkp offering
* add check
* fix issue with test
* remove unused imports
* prevent creating a bkp offering of a bkp repo that already exists
* extend clone disk and service offerings to domain admins
sandeeplocharla pushed a commit to NetApp/cloudstack that referenced this pull request Apr 9, 2026
* Add support to clone existing offerings and update them
* add support for vpc & backup offerings to be cloned
* fix capability list and mapping of params
* Add support to clone network and vpc offering with the right parameters
* make fields non mandatory for clone offerings APIs
* Add UI support for cloning Compute and System Service offerings
* remove unnecessary changes
* fix license and pre-ccommit issues
* Add UI support to clone disk and network offering
* vpc & backup offering clone api
* add unit tests
* fix pre-commit checks
* increase test coverage
* combine add/clone disk/compute offering forms
* update license
* fix unit tests
* fix test failures
* fix test failure - unnecessary stubbings
* pre-commit check failure
* add recently added domain id for bkp offering to be inherited in clone operation
* extract common code wrt service capability in network & vpc offering in add/clone operations
* add some checks to prevent networkmode change when provider is nsx/netris from the source networkmode
* address copilot comments
* address comments
* combine check
* use appropriate zoneId during clone bkp offering
* add check
* fix issue with test
* remove unused imports
* prevent creating a bkp offering of a bkp repo that already exists
* extend clone disk and service offerings to domain admins
dhslove pushed a commit to dhslove/ablestack-cloud that referenced this pull request Apr 21, 2026
* Add support to clone existing offerings and update them
* add support for vpc & backup offerings to be cloned
* fix capability list and mapping of params
* Add support to clone network and vpc offering with the right parameters
* make fields non mandatory for clone offerings APIs
* Add UI support for cloning Compute and System Service offerings
* remove unnecessary changes
* fix license and pre-ccommit issues
* Add UI support to clone disk and network offering
* vpc & backup offering clone api
* add unit tests
* fix pre-commit checks
* increase test coverage
* combine add/clone disk/compute offering forms
* update license
* fix unit tests
* fix test failures
* fix test failure - unnecessary stubbings
* pre-commit check failure
* add recently added domain id for bkp offering to be inherited in clone operation
* extract common code wrt service capability in network & vpc offering in add/clone operations
* add some checks to prevent networkmode change when provider is nsx/netris from the source networkmode
* address copilot comments
* address comments
* combine check
* use appropriate zoneId during clone bkp offering
* add check
* fix issue with test
* remove unused imports
* prevent creating a bkp offering of a bkp repo that already exists
* extend clone disk and service offerings to domain admins
Sign up for freeto 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.

7 participants

@Pearl1594@DaanHoogland@blueorangutan@kiranchavala@harikrishna-patnala@weizhouapache