diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CloneBackupOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CloneBackupOfferingCmd.java index 462fdb65289..1dc104df3b7 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CloneBackupOfferingCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CloneBackupOfferingCmd.java @@ -48,7 +48,7 @@ import java.util.function.LongFunction; @APICommand(name = "cloneBackupOffering", description = "Clones a backup offering from an existing offering", - responseObject = BackupOfferingResponse.class, since = "4.14.0", + responseObject = BackupOfferingResponse.class, since = "4.23.0", authorized = {RoleType.Admin}) public class CloneBackupOfferingCmd extends BaseAsyncCmd implements DomainAndZoneIdResolver { @@ -63,7 +63,7 @@ public class CloneBackupOfferingCmd extends BaseAsyncCmd implements DomainAndZon required = true, description = "The ID of the source backup offering to clone from") private Long sourceOfferingId; - @Parameter(name = ApiConstants.NAME, type = BaseCmd.CommandType.STRING, required = false, + @Parameter(name = ApiConstants.NAME, type = BaseCmd.CommandType.STRING, required = true, description = "The name of the cloned offering") private String name; diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index fabf1b9e4a5..2f5aa12fee1 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -955,7 +955,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } normalizedDropServices.add(service.getName()); } - finalServices.removeAll(dropServices); + finalServices.removeAll(normalizedDropServices); logger.debug("Dropped services from clone: {}", dropServices); } diff --git a/ui/src/components/offering/DiskOfferingForm.vue b/ui/src/components/offering/DiskOfferingForm.vue index b7d30168cf7..f3f39647fef 100644 --- a/ui/src/components/offering/DiskOfferingForm.vue +++ b/ui/src/components/offering/DiskOfferingForm.vue @@ -420,7 +420,7 @@ export default { } }, handleWriteCacheTypeChange (val) { - this.form.writeCacheType = val + this.form.writecachetype = val }, isDomainAdmin () { return ['DomainAdmin'].includes(this.$store.getters.userInfo.roletype) diff --git a/ui/src/views/offering/CloneComputeOffering.vue b/ui/src/views/offering/CloneComputeOffering.vue index 58387cfa6c4..07ce8852add 100644 --- a/ui/src/views/offering/CloneComputeOffering.vue +++ b/ui/src/views/offering/CloneComputeOffering.vue @@ -68,7 +68,7 @@ import DetailsInput from '@/components/widgets/DetailsInput' import store from '@/store' export default { - name: 'CreateComputeOffering', + name: 'CloneComputeOffering', mixins: [mixinForm], components: { ComputeOfferingForm, @@ -404,7 +404,7 @@ export default { }).then(json => { this.diskOfferings = json.listdiskofferingsresponse.diskoffering || [] if (this.selectedDiskOfferingId === '') { - this.selectedDiskOfferingId = this.diskOfferings[0].id || '' + this.selectedDiskOfferingId = this.diskOfferings?.[0]?.id || '' } }).finally(() => { this.diskOfferingLoading = false @@ -636,7 +636,7 @@ export default { } params.sourceofferingid = this.resource.id - + this.loading = true postAPI('cloneServiceOffering', params).then(json => { const message = this.isSystem ? `${this.$t('message.clone.service.offering')}: `