Skip to content

Commit 35ea878

Browse files
committed
add createCrossZoneInstnaceEnabled to BackupOfferingResponse
1 parent ec533cd commit 35ea878

File tree

6 files changed

+33
-25
lines changed

6 files changed

+33
-25
lines changed

api/src/main/java/org/apache/cloudstack/api/response/BackupOfferingResponse.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ public class BackupOfferingResponse extends BaseResponse {
6161
@Param(description = "zone name")
6262
private String zoneName;
6363

64+
@SerializedName(ApiConstants.CROSS_ZONE_INSTANCE_CREATION)
65+
@Param(description = "the backups with this offering can be used to create Instances on all Zones")
66+
private Boolean crossZoneInstanceCreation;
67+
6468
@SerializedName(ApiConstants.CREATED)
6569
@Param(description = "the date this backup offering was created")
6670
private Date created;
@@ -97,6 +101,10 @@ public void setZoneName(String zoneName) {
97101
this.zoneName = zoneName;
98102
}
99103

104+
public void setCrossZoneInstanceCreation(Boolean crossZoneInstanceCreation) {
105+
this.crossZoneInstanceCreation = crossZoneInstanceCreation;
106+
}
107+
100108
public void setCreated(Date created) {
101109
this.created = created;
102110
}

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupOfferingDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.cloud.utils.db.GenericDao;
2525

2626
public interface BackupOfferingDao extends GenericDao<BackupOfferingVO, Long> {
27-
BackupOfferingResponse newBackupOfferingResponse(BackupOffering policy);
27+
BackupOfferingResponse newBackupOfferingResponse(BackupOffering policy, Boolean crossZoneInstanceCreation);
2828
BackupOffering findByExternalId(String externalId, Long zoneId);
2929
BackupOffering findByName(String name, Long zoneId);
3030
}

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupOfferingDaoImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ protected void init() {
5050
}
5151

5252
@Override
53-
public BackupOfferingResponse newBackupOfferingResponse(BackupOffering offering) {
53+
public BackupOfferingResponse newBackupOfferingResponse(BackupOffering offering, Boolean crossZoneInstanceCreation) {
5454
DataCenterVO zone = dataCenterDao.findById(offering.getZoneId());
5555

5656
BackupOfferingResponse response = new BackupOfferingResponse();
@@ -64,6 +64,9 @@ public BackupOfferingResponse newBackupOfferingResponse(BackupOffering offering)
6464
response.setZoneId(zone.getUuid());
6565
response.setZoneName(zone.getName());
6666
}
67+
if (crossZoneInstanceCreation) {
68+
response.setCrossZoneInstanceCreation(true);
69+
}
6770
response.setCreated(offering.getCreated());
6871
response.setObjectName("backupoffering");
6972
return response;

server/src/main/java/com/cloud/api/ApiDBUtils.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@
7575
import org.apache.cloudstack.api.response.VpcOfferingResponse;
7676
import org.apache.cloudstack.api.response.ZoneResponse;
7777
import org.apache.cloudstack.backup.BackupOffering;
78+
import org.apache.cloudstack.backup.BackupRepository;
7879
import org.apache.cloudstack.backup.BackupSchedule;
7980
import org.apache.cloudstack.backup.dao.BackupDao;
8081
import org.apache.cloudstack.backup.dao.BackupOfferingDao;
82+
import org.apache.cloudstack.backup.dao.BackupRepositoryDao;
8183
import org.apache.cloudstack.backup.dao.BackupScheduleDao;
8284
import org.apache.cloudstack.context.CallContext;
8385
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
@@ -493,6 +495,7 @@ public class ApiDBUtils {
493495
static BackupDao s_backupDao;
494496
static BackupScheduleDao s_backupScheduleDao;
495497
static BackupOfferingDao s_backupOfferingDao;
498+
static BackupRepositoryDao s_backupRepositoryDao;
496499
static NicDao s_nicDao;
497500
static ResourceManagerUtil s_resourceManagerUtil;
498501
static SnapshotPolicyDetailsDao s_snapshotPolicyDetailsDao;
@@ -751,6 +754,8 @@ public class ApiDBUtils {
751754
@Inject
752755
private BackupOfferingDao backupOfferingDao;
753756
@Inject
757+
private BackupRepositoryDao backupRepositoryDao;
758+
@Inject
754759
private BackupScheduleDao backupScheduleDao;
755760
@Inject
756761
private NicDao nicDao;
@@ -899,6 +904,7 @@ void init() {
899904
s_backupDao = backupDao;
900905
s_backupScheduleDao = backupScheduleDao;
901906
s_backupOfferingDao = backupOfferingDao;
907+
s_backupRepositoryDao = backupRepositoryDao;
902908
s_resourceIconDao = resourceIconDao;
903909
s_resourceManagerUtil = resourceManagerUtil;
904910
s_objectStoreDao = objectStoreDao;
@@ -2297,8 +2303,10 @@ public static BackupScheduleResponse newBackupScheduleResponse(BackupSchedule sc
22972303
return s_backupScheduleDao.newBackupScheduleResponse(schedule);
22982304
}
22992305

2300-
public static BackupOfferingResponse newBackupOfferingResponse(BackupOffering policy) {
2301-
return s_backupOfferingDao.newBackupOfferingResponse(policy);
2306+
public static BackupOfferingResponse newBackupOfferingResponse(BackupOffering offering) {
2307+
BackupRepository repository = s_backupRepositoryDao.findByUuid(offering.getExternalId());
2308+
Boolean crossZoneInstanceCreationEnabled = repository != null ? repository.crossZoneInstanceCreationEnabled() : false;
2309+
return s_backupOfferingDao.newBackupOfferingResponse(offering, crossZoneInstanceCreationEnabled);
23022310
}
23032311

23042312
public static NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId) {

server/src/main/java/com/cloud/api/ApiResponseHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5079,8 +5079,8 @@ public BackupScheduleResponse createBackupScheduleResponse(BackupSchedule schedu
50795079
}
50805080

50815081
@Override
5082-
public BackupOfferingResponse createBackupOfferingResponse(BackupOffering policy) {
5083-
return ApiDBUtils.newBackupOfferingResponse(policy);
5082+
public BackupOfferingResponse createBackupOfferingResponse(BackupOffering offering) {
5083+
return ApiDBUtils.newBackupOfferingResponse(offering);
50845084
}
50855085

50865086
public ManagementServerResponse createManagementResponse(ManagementServerHost mgmt) {

ui/src/views/storage/CreateVMFromBackup.vue

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,16 @@ export default {
9191
required: true
9292
}
9393
},
94-
created () {
95-
this.fetchServiceOffering()
96-
this.fetchBackupOffering().then(() => {
97-
this.fetchBackupRepository()
98-
this.loading = false
99-
})
94+
async created () {
95+
await Promise.all[(
96+
this.fetchServiceOffering(),
97+
this.fetchBackupOffering()
98+
)]
99+
this.loading = false
100100
},
101101
methods: {
102102
fetchServiceOffering () {
103-
getAPI('listServiceOfferings', {
103+
return getAPI('listServiceOfferings', {
104104
zoneid: this.resource.zoneid,
105105
id: this.resource.vmdetails.serviceofferingid,
106106
listall: true
@@ -118,21 +118,10 @@ export default {
118118
this.backupOffering = backupOfferings[0]
119119
})
120120
},
121-
fetchBackupRepository () {
122-
if (this.backupOffering.provider !== 'nas') {
123-
return
124-
}
125-
getAPI('listBackupRepositories', {
126-
id: this.backupOffering.externalid
127-
}).then(response => {
128-
const backupRepositories = response.listbackuprepositoriesresponse.backuprepository || []
129-
this.backupRepository = backupRepositories[0]
130-
})
131-
},
132121
populatePreFillData () {
133122
this.vmdetails = this.resource.vmdetails
134123
this.dataPreFill.zoneid = this.resource.zoneid
135-
this.dataPreFill.crosszoneinstancecreation = this.backupRepository?.crosszoneinstancecreation || this.backupOffering.provider === 'dummy'
124+
this.dataPreFill.crosszoneinstancecreation = this.backupOffering?.crosszoneinstancecreation || this.backupOffering.provider === 'dummy'
136125
this.dataPreFill.isIso = (this.vmdetails.isiso === 'true')
137126
this.dataPreFill.backupid = this.resource.id
138127
this.dataPreFill.computeofferingid = this.vmdetails.serviceofferingid

0 commit comments

Comments
 (0)