Skip to content

Commit 317b23e

Browse files
committed
addressed review comments
1 parent a3a8106 commit 317b23e

File tree

16 files changed

+267
-319
lines changed

16 files changed

+267
-319
lines changed

api/src/main/java/com/cloud/event/EventTypes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ public class EventTypes {
610610
public static final String EVENT_VM_BACKUP_CREATE = "BACKUP.CREATE";
611611
public static final String EVENT_VM_BACKUP_RESTORE = "BACKUP.RESTORE";
612612
public static final String EVENT_VM_BACKUP_DELETE = "BACKUP.DELETE";
613-
public static final String EVENT_VM_BACKUP_OFFERING_BACKUPS_DELETED = "BACKUP.OFFERING.BACKUPS.DEL";
613+
public static final String EVENT_VM_BACKUP_OFFERING_REMOVED_AND_BACKUPS_DELETED = "BACKUP.OFFERING.BACKUPS.DEL";
614614
public static final String EVENT_VM_BACKUP_RESTORE_VOLUME_TO_VM = "BACKUP.RESTORE.VOLUME.TO.VM";
615615
public static final String EVENT_VM_BACKUP_SCHEDULE_CONFIGURE = "BACKUP.SCHEDULE.CONFIGURE";
616616
public static final String EVENT_VM_BACKUP_SCHEDULE_DELETE = "BACKUP.SCHEDULE.DELETE";

api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,8 +534,6 @@ List<TemplateResponse> createTemplateResponses(ResponseView view, VirtualMachine
534534

535535
UserDataResponse createUserDataResponse(UserData userData);
536536

537-
BackupResponse createBackupResponse(Backup backup, Boolean listVmDetails);
538-
539537
BackupScheduleResponse createBackupScheduleResponse(BackupSchedule backup);
540538

541539
BackupOfferingResponse createBackupOfferingResponse(BackupOffering policy);

api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ protected void setupResponseBackupList(final List<Backup> backups, final Integer
133133
if (backup == null) {
134134
continue;
135135
}
136-
BackupResponse backupResponse = _responseGenerator.createBackupResponse(backup, this.getListVmDetails());
136+
BackupResponse backupResponse = backupManager.createBackupResponse(backup, this.getListVmDetails());
137137
responses.add(backupResponse);
138138
}
139139
final ListResponse<BackupResponse> response = new ListResponse<>();

api/src/main/java/org/apache/cloudstack/backup/BackupManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.cloudstack.api.command.user.backup.DeleteBackupScheduleCmd;
3030
import org.apache.cloudstack.api.command.user.backup.ListBackupOfferingsCmd;
3131
import org.apache.cloudstack.api.command.user.backup.ListBackupsCmd;
32+
import org.apache.cloudstack.api.response.BackupResponse;
3233
import org.apache.cloudstack.framework.config.ConfigKey;
3334
import org.apache.cloudstack.framework.config.Configurable;
3435

@@ -270,6 +271,8 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
270271

271272
String getBackupNameFromVM(VirtualMachine vm);
272273

274+
BackupResponse createBackupResponse(Backup backup, Boolean listVmDetails);
275+
273276
Capacity getBackupStorageUsedStats(Long zoneId);
274277

275278
void checkAndRemoveBackupOfferingBeforeExpunge(VirtualMachine vm);

engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,6 @@ public void setDetails(Map<String, String> details) {
282282
this.details = details;
283283
}
284284

285-
public void addDetails(Map<String, String> details) {
286-
this.details.putAll(details);
287-
}
288-
289285
public Date getRemoved() {
290286
return removed;
291287
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import java.util.List;
2121

22-
import org.apache.cloudstack.api.response.BackupResponse;
2322
import org.apache.cloudstack.backup.Backup;
2423
import org.apache.cloudstack.backup.BackupVO;
2524

@@ -39,7 +38,6 @@ public interface BackupDao extends GenericDao<BackupVO, Long> {
3938
List<Backup> listByOfferingId(Long backupOfferingId);
4039
List<BackupVO> listBackupsByVMandIntervalType(Long vmId, Backup.Type backupType);
4140
List<Long> listVmIdsWithBackupsInZone(Long zoneId);
42-
BackupResponse newBackupResponse(Backup backup, Boolean listVmDetails);
4341
public Long countBackupsForAccount(long accountId);
4442
public Long calculateBackupStorageForAccount(long accountId);
4543
void loadDetails(BackupVO backup);

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

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -17,48 +17,32 @@
1717

1818
package org.apache.cloudstack.backup.dao;
1919

20-
import java.lang.reflect.Type;
2120
import java.util.ArrayList;
22-
import java.util.HashMap;
2321
import java.util.List;
2422
import java.util.Map;
25-
import java.util.Objects;
2623

2724
import javax.annotation.PostConstruct;
2825
import javax.inject.Inject;
2926

30-
import com.cloud.offering.ServiceOffering;
3127
import com.cloud.service.dao.ServiceOfferingDao;
32-
import com.cloud.storage.Storage;
3328
import com.cloud.storage.dao.VMTemplateDao;
34-
import com.cloud.template.VirtualMachineTemplate;
3529
import com.cloud.utils.db.GenericSearchBuilder;
3630

37-
import org.apache.cloudstack.api.ApiConstants;
38-
import org.apache.cloudstack.api.response.BackupResponse;
3931
import org.apache.cloudstack.backup.Backup;
4032
import org.apache.cloudstack.backup.BackupDetailVO;
41-
import org.apache.cloudstack.backup.BackupOffering;
4233
import org.apache.cloudstack.backup.BackupVO;
4334
import org.apache.commons.collections.CollectionUtils;
4435

45-
import com.cloud.dc.DataCenterVO;
4636
import com.cloud.dc.dao.DataCenterDao;
47-
import com.cloud.domain.DomainVO;
4837
import com.cloud.domain.dao.DomainDao;
49-
import com.cloud.user.AccountVO;
5038
import com.cloud.user.dao.AccountDao;
5139
import com.cloud.utils.db.GenericDaoBase;
5240
import com.cloud.utils.db.SearchBuilder;
5341
import com.cloud.utils.db.SearchCriteria;
5442
import com.cloud.utils.db.Transaction;
5543
import com.cloud.utils.db.TransactionCallback;
56-
import com.cloud.vm.VMInstanceVO;
5744
import com.cloud.vm.dao.VMInstanceDao;
58-
import com.cloud.network.Network;
5945
import com.cloud.network.dao.NetworkDao;
60-
import com.google.gson.Gson;
61-
import com.google.gson.reflect.TypeToken;
6246

6347
public class BackupDaoImpl extends GenericDaoBase<BackupVO, Long> implements BackupDao {
6448

@@ -297,98 +281,4 @@ public List<Long> listVmIdsWithBackupsInZone(Long zoneId) {
297281
sc.setParameters("zone_id", zoneId);
298282
return customSearchIncludingRemoved(sc, null);
299283
}
300-
301-
Map<String, String> getDetailsFromBackupDetails(Long backupId) {
302-
Map<String, String> details = backupDetailsDao.listDetailsKeyPairs(backupId, true);
303-
if (details == null) {
304-
return null;
305-
}
306-
if (details.containsKey(ApiConstants.TEMPLATE_ID)) {
307-
VirtualMachineTemplate template = templateDao.findByUuid(details.get(ApiConstants.TEMPLATE_ID));
308-
if (template != null) {
309-
details.put(ApiConstants.TEMPLATE_ID, template.getUuid());
310-
details.put(ApiConstants.TEMPLATE_NAME, template.getName());
311-
details.put(ApiConstants.IS_ISO, String.valueOf(template.getFormat().equals(Storage.ImageFormat.ISO)));
312-
}
313-
}
314-
if (details.containsKey(ApiConstants.SERVICE_OFFERING_ID)) {
315-
ServiceOffering serviceOffering = serviceOfferingDao.findByUuid(details.get(ApiConstants.SERVICE_OFFERING_ID));
316-
if (serviceOffering != null) {
317-
details.put(ApiConstants.SERVICE_OFFERING_ID, serviceOffering.getUuid());
318-
details.put(ApiConstants.SERVICE_OFFERING_NAME, serviceOffering.getName());
319-
}
320-
}
321-
if (details.containsKey(ApiConstants.NICS)) {
322-
Type type = new TypeToken<List<Map<String, String>>>() {}.getType();
323-
List<Map<String, String>> nics = new Gson().fromJson(details.get(ApiConstants.NICS), type);
324-
325-
for (Map<String, String> nic : nics) {
326-
String networkUuid = nic.get(ApiConstants.NETWORK_ID);
327-
if (networkUuid != null) {
328-
Network network = networkDao.findByUuid(networkUuid);
329-
if (network != null) {
330-
nic.put(ApiConstants.NETWORK_NAME, network.getName());
331-
}
332-
}
333-
}
334-
details.put(ApiConstants.NICS, new Gson().toJson(nics));
335-
}
336-
return details;
337-
}
338-
339-
@Override
340-
public BackupResponse newBackupResponse(Backup backup, Boolean listVmDetails) {
341-
VMInstanceVO vm = vmInstanceDao.findByIdIncludingRemoved(backup.getVmId());
342-
AccountVO account = accountDao.findByIdIncludingRemoved(backup.getAccountId());
343-
DomainVO domain = domainDao.findByIdIncludingRemoved(backup.getDomainId());
344-
DataCenterVO zone = dataCenterDao.findByIdIncludingRemoved(backup.getZoneId());
345-
Long offeringId = backup.getBackupOfferingId();
346-
BackupOffering offering = backupOfferingDao.findByIdIncludingRemoved(offeringId);
347-
348-
BackupResponse response = new BackupResponse();
349-
response.setId(backup.getUuid());
350-
response.setName(backup.getName());
351-
response.setDescription(backup.getDescription());
352-
response.setVmName(vm.getHostName());
353-
response.setVmId(vm.getUuid());
354-
if (vm.getBackupOfferingId() == null || vm.getBackupOfferingId() != backup.getBackupOfferingId()) {
355-
response.setVmOfferingRemoved(true);
356-
}
357-
response.setExternalId(backup.getExternalId());
358-
response.setType(backup.getType());
359-
response.setDate(backup.getDate());
360-
response.setSize(backup.getSize());
361-
response.setProtectedSize(backup.getProtectedSize());
362-
response.setStatus(backup.getStatus());
363-
if (backup.getBackupIntervalType() != null) {
364-
response.setIntervalType(Backup.Type.values()[backup.getBackupIntervalType()].toString());
365-
}
366-
// ACS 4.20: For backups taken prior this release the backup.backed_volumes column would be empty hence use vm_instance.backup_volumes
367-
String backedUpVolumes;
368-
if (Objects.isNull(backup.getBackedUpVolumes())) {
369-
backedUpVolumes = new Gson().toJson(vm.getBackupVolumeList().toArray(), Backup.VolumeInfo[].class);
370-
} else {
371-
backedUpVolumes = new Gson().toJson(backup.getBackedUpVolumes().toArray(), Backup.VolumeInfo[].class);
372-
}
373-
response.setVolumes(backedUpVolumes);
374-
response.setBackupOfferingId(offering.getUuid());
375-
response.setBackupOffering(offering.getName());
376-
response.setAccountId(account.getUuid());
377-
response.setAccount(account.getAccountName());
378-
response.setDomainId(domain.getUuid());
379-
response.setDomain(domain.getName());
380-
response.setZoneId(zone.getUuid());
381-
response.setZone(zone.getName());
382-
383-
if (Boolean.TRUE.equals(listVmDetails)) {
384-
Map<String, String> vmDetails = new HashMap<>();
385-
vmDetails.put(ApiConstants.HYPERVISOR, vm.getHypervisorType().toString());
386-
Map<String, String> details = getDetailsFromBackupDetails(backup.getId());
387-
vmDetails.putAll(details);
388-
response.setVmDetails(vmDetails);
389-
}
390-
391-
response.setObjectName("backup");
392-
return response;
393-
}
394284
}

engine/schema/src/test/java/org/apache/cloudstack/backup/dao/BackupDaoImplTest.java

Lines changed: 0 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,9 @@
1616
// under the License.
1717
package org.apache.cloudstack.backup.dao;
1818

19-
import static org.mockito.Mockito.mock;
20-
import static org.mockito.Mockito.when;
21-
2219
import java.util.HashMap;
2320
import java.util.Map;
2421

25-
import org.apache.cloudstack.api.ApiConstants;
26-
import org.apache.cloudstack.api.response.BackupResponse;
27-
import org.apache.cloudstack.backup.Backup;
28-
import org.apache.cloudstack.backup.BackupOfferingVO;
2922
import org.apache.cloudstack.backup.BackupVO;
3023
import org.junit.Assert;
3124
import org.junit.Test;
@@ -37,26 +30,6 @@
3730
import org.mockito.junit.MockitoJUnitRunner;
3831
import org.springframework.test.util.ReflectionTestUtils;
3932

40-
import com.cloud.dc.DataCenter;
41-
import com.cloud.dc.DataCenterVO;
42-
import com.cloud.dc.dao.DataCenterDao;
43-
import com.cloud.domain.DomainVO;
44-
import com.cloud.domain.dao.DomainDao;
45-
import com.cloud.hypervisor.Hypervisor;
46-
import com.cloud.network.dao.NetworkDao;
47-
import com.cloud.network.dao.NetworkVO;
48-
import com.cloud.service.ServiceOfferingVO;
49-
import com.cloud.service.dao.ServiceOfferingDao;
50-
import com.cloud.storage.Storage;
51-
import com.cloud.storage.VMTemplateVO;
52-
import com.cloud.storage.dao.VMTemplateDao;
53-
import com.cloud.user.AccountVO;
54-
import com.cloud.user.dao.AccountDao;
55-
import com.cloud.utils.db.SearchBuilder;
56-
import com.cloud.vm.VMInstanceVO;
57-
import com.cloud.vm.VirtualMachine;
58-
import com.cloud.vm.dao.VMInstanceDao;
59-
6033
@RunWith(MockitoJUnitRunner.class)
6134
public class BackupDaoImplTest {
6235
@Spy
@@ -66,33 +39,6 @@ public class BackupDaoImplTest {
6639
@Mock
6740
BackupDetailsDao backupDetailsDao;
6841

69-
@Mock
70-
SearchBuilder<BackupVO> backupSearch;
71-
72-
@Mock
73-
VMInstanceDao vmInstanceDao;
74-
75-
@Mock
76-
AccountDao accountDao;
77-
78-
@Mock
79-
DomainDao domainDao;
80-
81-
@Mock
82-
DataCenterDao dataCenterDao;
83-
84-
@Mock
85-
BackupOfferingDao backupOfferingDao;
86-
87-
@Mock
88-
private VMTemplateDao templateDao;
89-
90-
@Mock
91-
ServiceOfferingDao serviceOfferingDao;
92-
93-
@Mock
94-
NetworkDao networkDao;
95-
9642
@Test
9743
public void testLoadDetails() {
9844
Long backupId = 1L;
@@ -124,95 +70,4 @@ public void testSaveDetails() {
12470

12571
Mockito.verify(backupDetailsDao).saveDetails(Mockito.anyList());
12672
}
127-
128-
@Test
129-
public void testNewBackupResponse() {
130-
Long vmId = 1L;
131-
Long accountId = 2L;
132-
Long domainId = 3L;
133-
Long zoneId = 4L;
134-
Long vmOfferingId = 5L;
135-
Long backupOfferingId = 6L;
136-
Long backupId = 7L;
137-
Long templateId = 8L;
138-
String templateUuid = "template-uuid1";
139-
String serviceOfferingUuid = "service-offering-uuid1";
140-
141-
BackupVO backup = new BackupVO();
142-
ReflectionTestUtils.setField(backup, "id", backupId);
143-
ReflectionTestUtils.setField(backup, "uuid", "backup-uuid");
144-
backup.setVmId(vmId);
145-
backup.setAccountId(accountId);
146-
backup.setDomainId(domainId);
147-
backup.setZoneId(zoneId);
148-
backup.setBackupOfferingId(backupOfferingId);
149-
backup.setType("Full");
150-
backup.setBackupIntervalType((short) Backup.Type.MANUAL.ordinal());
151-
152-
VMInstanceVO vm = new VMInstanceVO(vmId, 0L, "test-vm", "test-vm", VirtualMachine.Type.User,
153-
0L, Hypervisor.HypervisorType.Simulator, 0L, domainId, accountId, 0L, false);
154-
vm.setDataCenterId(zoneId);
155-
vm.setBackupOfferingId(vmOfferingId);
156-
vm.setTemplateId(templateId);
157-
158-
AccountVO account = new AccountVO();
159-
account.setUuid("account-uuid");
160-
account.setAccountName("test-account");
161-
162-
DomainVO domain = new DomainVO();
163-
domain.setUuid("domain-uuid");
164-
domain.setName("test-domain");
165-
166-
DataCenterVO zone = new DataCenterVO(1L, "test-zone", null, null, null, null, null, null, null, null, DataCenter.NetworkType.Advanced, null, null);
167-
zone.setUuid("zone-uuid");
168-
169-
BackupOfferingVO offering = Mockito.mock(BackupOfferingVO.class);
170-
Mockito.when(offering.getUuid()).thenReturn("offering-uuid");
171-
Mockito.when(offering.getName()).thenReturn("test-offering");
172-
173-
Mockito.when(vmInstanceDao.findByIdIncludingRemoved(vmId)).thenReturn(vm);
174-
Mockito.when(accountDao.findByIdIncludingRemoved(accountId)).thenReturn(account);
175-
Mockito.when(domainDao.findByIdIncludingRemoved(domainId)).thenReturn(domain);
176-
Mockito.when(dataCenterDao.findByIdIncludingRemoved(zoneId)).thenReturn(zone);
177-
Mockito.when(backupOfferingDao.findByIdIncludingRemoved(backupOfferingId)).thenReturn(offering);
178-
179-
VMTemplateVO template = mock(VMTemplateVO.class);
180-
when(template.getFormat()).thenReturn(Storage.ImageFormat.QCOW2);
181-
when(template.getUuid()).thenReturn(templateUuid);
182-
when(template.getName()).thenReturn("template1");
183-
when(templateDao.findByUuid(templateUuid)).thenReturn(template);
184-
Map<String, String> details = new HashMap<>();
185-
details.put(ApiConstants.TEMPLATE_ID, templateUuid);
186-
187-
ServiceOfferingVO serviceOffering = mock(ServiceOfferingVO.class);
188-
when(serviceOffering.getUuid()).thenReturn(serviceOfferingUuid);
189-
when(serviceOffering.getName()).thenReturn("service-offering1");
190-
when(serviceOfferingDao.findByUuid(serviceOfferingUuid)).thenReturn(serviceOffering);
191-
details.put(ApiConstants.SERVICE_OFFERING_ID, serviceOfferingUuid);
192-
193-
NetworkVO network = mock(NetworkVO.class);
194-
when(network.getName()).thenReturn("network1");
195-
when(networkDao.findByUuid("network-uuid1")).thenReturn(network);
196-
details.put(ApiConstants.NICS, "[{\"networkid\":\"network-uuid1\"}]");
197-
198-
Mockito.when(backupDetailsDao.listDetailsKeyPairs(backup.getId(), true)).thenReturn(details);
199-
200-
BackupResponse response = backupDao.newBackupResponse(backup, true);
201-
202-
Assert.assertEquals("backup-uuid", response.getId());
203-
Assert.assertEquals("test-vm", response.getVmName());
204-
Assert.assertEquals("account-uuid", response.getAccountId());
205-
Assert.assertEquals("test-account", response.getAccount());
206-
Assert.assertEquals("domain-uuid", response.getDomainId());
207-
Assert.assertEquals("test-domain", response.getDomain());
208-
Assert.assertEquals("zone-uuid", response.getZoneId());
209-
Assert.assertEquals("test-zone", response.getZone());
210-
Assert.assertEquals("offering-uuid", response.getBackupOfferingId());
211-
Assert.assertEquals("test-offering", response.getBackupOffering());
212-
Assert.assertEquals("MANUAL", response.getIntervalType());
213-
Assert.assertEquals("{serviceofferingid=service-offering-uuid1, isiso=false, hypervisor=Simulator, " +
214-
"nics=[{\"networkid\":\"network-uuid1\",\"networkname\":\"network1\"}], serviceofferingname=service-offering1, " +
215-
"templatename=template1, templateid=template-uuid1}", response.getVmDetails().toString());
216-
Assert.assertEquals(true, response.getVmOfferingRemoved());
217-
}
21873
}

0 commit comments

Comments
 (0)