@@ -460,32 +460,34 @@ public BackupOffering cloneBackupOffering(final CloneBackupOfferingCmd cmd) {
460460
461461 List <Long > filteredDomainIds = cmd .getDomainIds () == null ? new ArrayList <>() : new ArrayList <>(cmd .getDomainIds ());
462462 Collections .sort (filteredDomainIds );
463- updateBackupOfferingDomainDetail (savedOffering , filteredDomainIds );
464- List <BackupOfferingDetailsVO > details = backupOfferingDetailsDao .listDetails (sourceOffering .getId ());
465- details .removeIf (backupOfferingDetailsVO -> ApiConstants .DOMAIN_ID .equals (backupOfferingDetailsVO .getName ()) || ApiConstants .ZONE_ID .equals (backupOfferingDetailsVO .getName ()));
466- details .forEach (detail -> detail .setResourceId (savedOffering .getId ()));
467- backupOfferingDetailsDao .saveDetails (details );
463+ updateBackupOfferingDetails (savedOffering , sourceOffering , filteredDomainIds );
468464
469465 logger .debug ("Successfully cloned backup offering '" + sourceOffering .getName () + "' (ID: " + cmd .getSourceOfferingId () + ") to '" + cmd .getName () + "' (ID: " + savedOffering .getId () + ")" );
470466 return savedOffering ;
471467 }
472468
473- private void updateBackupOfferingDomainDetail (BackupOfferingVO savedOffering , List <Long > filteredDomainIds ) {
469+ private void updateBackupOfferingDetails (BackupOfferingVO savedOffering , BackupOfferingVO sourceOffering , List <Long > filteredDomainIds ) {
474470 if (filteredDomainIds .size () > 1 ) {
475471 filteredDomainIds = domainHelper .filterChildSubDomains (filteredDomainIds );
476472 }
477473
474+ List <BackupOfferingDetailsVO > detailsVOList = new ArrayList <>();
478475 if (CollectionUtils .isNotEmpty (filteredDomainIds )) {
479- List <BackupOfferingDetailsVO > detailsVOList = new ArrayList <>();
480476 for (Long domainId : filteredDomainIds ) {
481477 if (domainDao .findById (domainId ) == null ) {
482478 throw new InvalidParameterValueException ("Please specify a valid domain id" );
483479 }
484480 detailsVOList .add (new BackupOfferingDetailsVO (savedOffering .getId (), ApiConstants .DOMAIN_ID , String .valueOf (domainId ), false ));
485481 }
486- if (!detailsVOList .isEmpty ()) {
487- backupOfferingDetailsDao .saveDetails (detailsVOList );
488- }
482+ }
483+
484+ List <BackupOfferingDetailsVO > details = backupOfferingDetailsDao .listDetails (sourceOffering .getId ());
485+ details .removeIf (backupOfferingDetailsVO -> ApiConstants .DOMAIN_ID .equals (backupOfferingDetailsVO .getName ()));
486+ details .forEach (detail -> detail .setResourceId (savedOffering .getId ()));
487+ detailsVOList .addAll (details );
488+
489+ if (!detailsVOList .isEmpty ()) {
490+ backupOfferingDetailsDao .saveDetails (detailsVOList );
489491 }
490492 }
491493
0 commit comments