Skip to content

[Veeam] disable jobs but keep backups #6589

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 53 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
0d9ed19
Allow users to delete job but keep the backups
SadiJr Mar 28, 2022
474e02c
Fix conflicts
Aug 3, 2022
528c194
Fix conflicts
Aug 12, 2022
77dbd89
Fix conflicts
Sep 22, 2022
6fc388d
Fix conflicts
Dec 5, 2022
f51ea9d
Initial fix of conflicts
Feb 13, 2023
5215075
Adjust veeam backup provider
Feb 13, 2023
c5dddf4
Fix sql script
Feb 13, 2023
a0e7fb9
Merge branch 'main' into veeam-disable-jobs-keep-backups
Feb 21, 2023
0a03736
Address GutoVeronezi reviews
Feb 21, 2023
4aba854
Merge branch 'main' into veeam-disable-jobs-keep-backups
Mar 28, 2023
01ef474
Improve split regex
Apr 19, 2023
a9b5fe5
Fix broken test
Apr 19, 2023
57c3316
Merge branch 'main' into veeam-disable-jobs-keep-backups
Apr 19, 2023
6fe1fb3
Merge branch 'main' into veeam-disable-jobs-keep-backups
May 18, 2023
2b21616
Merge branch 'main' into veeam-disable-jobs-keep-backups
Jun 2, 2023
a311248
Add minor fixes
Jun 6, 2023
759971e
Merge branch 'main' into veeam-disable-jobs-keep-backups
Jun 6, 2023
145163f
Merge branch 'main' into veeam-disable-jobs-keep-backups
Aug 17, 2023
749f324
Merge branch 'main' into veeam-disable-jobs-keep-backups
Aug 18, 2023
c800cca
Merge branch 'main' into veeam-disable-jobs-keep-backups
Aug 31, 2023
95618ca
Merge branch 'main' into veeam-disable-jobs-keep-backups
Sep 14, 2023
e95d6c3
Merge branch 'main' into veeam-disable-jobs-keep-backups
Oct 4, 2023
1a33ef3
Add tests and fix response
Oct 4, 2023
20a8fb3
Merge branch 'main' into veeam-disable-jobs-keep-backups
Oct 10, 2023
3c7fc2e
Merge branch 'main' into veeam-disable-jobs-keep-backups
Oct 26, 2023
3fe869f
Merge branch 'main' into veeam-disable-jobs-keep-backups
Dec 7, 2023
1c3cab2
Merge branch 'main' into veeam-disable-jobs-keep-backups
Dec 12, 2023
b684fc9
Merge branch 'main' into veeam-disable-jobs-keep-backups
Dec 20, 2023
dae3fc2
Merge branch 'main' into veeam-disable-jobs-keep-backups
Jan 26, 2024
6f3b4bd
Merge branch 'main' into veeam-disable-jobs-keep-backups
Mar 18, 2024
f1fbd21
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Mar 20, 2024
350b8d4
Revert findOneIncludingRemovedBy
BryanMLima Mar 20, 2024
e718a27
Update upgrade schema
BryanMLima Mar 20, 2024
0028ce6
Update loggers
BryanMLima Mar 20, 2024
d3dfdfc
Revert line deletion
BryanMLima Mar 20, 2024
b39601e
Fix semicolon
BryanMLima Mar 26, 2024
bb78ace
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Mar 26, 2024
8de0ba0
Readd import
BryanMLima Mar 26, 2024
de3a979
Fix unit test
BryanMLima Apr 19, 2024
3a129f0
Address review
BryanMLima Apr 19, 2024
22f1234
Merge branch 'main' into veeam-disable-jobs-keep-backups
BryanMLima May 22, 2024
4cc22e2
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Jun 14, 2024
f80f86b
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Jun 26, 2024
5c1c3b5
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Jul 26, 2024
2d7b07f
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Aug 23, 2024
668eb6c
Fix schema
BryanMLima Aug 23, 2024
a45da2c
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Sep 2, 2024
4c5a900
Address Fabricio review
BryanMLima Sep 2, 2024
fa7efc1
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Sep 5, 2024
ac0a27e
Merge branch 'main' of github.com:apache/cloudstack into veeam-disabl…
BryanMLima Sep 10, 2024
3ecec21
Resolve conflicts
hsato03 Apr 3, 2025
393c4f2
adjusts
hsato03 Apr 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion api/src/main/java/com/cloud/vm/VirtualMachine.java
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,8 @@ public boolean isUsedBySystem() {

Type getType();

String getBackupName();

HypervisorType getHypervisorType();

Map<String, String> getDetails();
Expand All @@ -355,5 +357,4 @@ public boolean isUsedBySystem() {
boolean isDisplay();

boolean isDynamicallyScalable();

}
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,26 @@
return id;
}

public void setId(Long id) {

Check warning on line 72 in api/src/main/java/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java#L72

Added line #L72 was not covered by tests
this.id = id;
}

public Long getDeviceId() {
return deviceId;
}

public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}

Check warning on line 82 in api/src/main/java/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java#L80-L82

Added lines #L80 - L82 were not covered by tests

public Long getVirtualMachineId() {
return virtualMachineId;
}

public void setVirtualMachineId(Long virtualMachineId) {
this.virtualMachineId = virtualMachineId;
}

Check warning on line 90 in api/src/main/java/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java#L88-L90

Added lines #L88 - L90 were not covered by tests

/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
Expand Down
34 changes: 30 additions & 4 deletions api/src/main/java/org/apache/cloudstack/backup/Backup.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import org.apache.commons.lang3.StringUtils;
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;

import com.cloud.storage.Volume;

Expand Down Expand Up @@ -85,6 +85,14 @@
private String id;
private Date created;
private String type;
private List<String> paths;

public RestorePoint(String id, Date created, String type, List<String> paths) {
this.id = id;
this.created = created;
this.type = type;
this.paths = paths;
}

Check warning on line 95 in api/src/main/java/org/apache/cloudstack/backup/Backup.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/backup/Backup.java#L90-L95

Added lines #L90 - L95 were not covered by tests

public RestorePoint(String id, Date created, String type) {
this.id = id;
Expand Down Expand Up @@ -115,19 +123,29 @@
public void setType(String type) {
this.type = type;
}

public void setPaths(List<String> paths) {
this.paths = paths;
}

Check warning on line 129 in api/src/main/java/org/apache/cloudstack/backup/Backup.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/backup/Backup.java#L127-L129

Added lines #L127 - L129 were not covered by tests

public List<String> getPaths() {
return paths;
}

Check warning on line 133 in api/src/main/java/org/apache/cloudstack/backup/Backup.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/backup/Backup.java#L131-L133

Added lines #L131 - L133 were not covered by tests
}

class VolumeInfo {
private String uuid;
private Volume.Type type;
private Long size;
private String path;
private Long deviceId;

public VolumeInfo(String uuid, String path, Volume.Type type, Long size) {
public VolumeInfo(String uuid, String path, Volume.Type type, Long size, Long deviceId) {
this.uuid = uuid;
this.type = type;
this.size = size;
this.path = path;
this.deviceId = deviceId;
}

public String getUuid() {
Expand All @@ -150,14 +168,21 @@
return size;
}

public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}

Check warning on line 173 in api/src/main/java/org/apache/cloudstack/backup/Backup.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/backup/Backup.java#L171-L173

Added lines #L171 - L173 were not covered by tests

public Long getDeviceId() {
return deviceId;
}

Check warning on line 177 in api/src/main/java/org/apache/cloudstack/backup/Backup.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/backup/Backup.java#L175-L177

Added lines #L175 - L177 were not covered by tests

@Override
public String toString() {
return StringUtils.join(":", uuid, path, type, size);
return ReflectionToStringBuilderUtils.reflectOnlySelectedFields(this, "uuid", "path", "type", "size", "deviceId");

Check warning on line 181 in api/src/main/java/org/apache/cloudstack/backup/Backup.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/backup/Backup.java#L181

Added line #L181 was not covered by tests
}
}

long getVmId();
long getBackupOfferingId();
String getExternalId();
String getType();
Date getDate();
Expand All @@ -166,4 +191,5 @@
Long getProtectedSize();
List<VolumeInfo> getBackedUpVolumes();
long getZoneId();
long getBackupOfferingId();
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public interface BackupProvider {
* @param vm the machine to stop backing up
* @return succeeded?
*/
boolean removeVMFromBackupOffering(VirtualMachine vm);
boolean removeVMFromBackupOffering(VirtualMachine vm, boolean removeBackups);

/**
* Whether the provider will delete backups on removal of VM from the offering
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public interface VolumeDao extends GenericDao<VolumeVO, Long>, StateDao<Volume.S

List<VolumeVO> findIncludingRemovedByZone(long zoneId);

VolumeVO findByPath(String path);
/**
* Lists all volumes using a given passphrase ID
* @param passphraseId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,13 @@
return findOneBy(sc);
}

@Override
public VolumeVO findByPath(String path) {
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();
sc.setParameters("path", path);
return findOneBy(sc);
}

Check warning on line 167 in engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java#L163-L167

Added lines #L163 - L167 were not covered by tests

@Override
public List<VolumeVO> findByPoolId(long poolId, Volume.Type volumeType) {
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();
Expand Down Expand Up @@ -396,6 +403,7 @@
AllFieldsSearch.and("updatedCount", AllFieldsSearch.entity().getUpdatedCount(), Op.EQ);
AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), Op.EQ);
AllFieldsSearch.and("passphraseId", AllFieldsSearch.entity().getPassphraseId(), Op.EQ);
AllFieldsSearch.and("path", AllFieldsSearch.entity().getPath(), Op.EQ);
AllFieldsSearch.and("iScsiName", AllFieldsSearch.entity().get_iScsiName(), Op.EQ);
AllFieldsSearch.done();

Expand Down
11 changes: 11 additions & 0 deletions engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@
@Column(name = "backup_volumes", length = 65535)
protected String backupVolumes;

@Column(name = "backup_name")
private String backupName;

public VMInstanceVO(long id, long serviceOfferingId, String name, String instanceName, Type type, Long vmTemplateId, HypervisorType hypervisorType, long guestOSId,
long domainId, long accountId, long userId, boolean haEnabled) {
this.id = id;
Expand Down Expand Up @@ -628,4 +631,12 @@
public void setBackupVolumes(String backupVolumes) {
this.backupVolumes = backupVolumes;
}

public String getBackupName() {
return backupName;
}

Check warning on line 637 in engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java#L635-L637

Added lines #L635 - L637 were not covered by tests

public void setBackupName(String backupName) {
this.backupName = backupName;
}

Check warning on line 641 in engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/vm/VMInstanceVO.java#L639-L641

Added lines #L639 - L641 were not covered by tests
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
import com.google.gson.Gson;

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

@Inject
AccountDao accountDao;

Expand Down Expand Up @@ -194,43 +193,48 @@

@Override
public BackupResponse newBackupResponse(Backup backup) {
VMInstanceVO vm = vmInstanceDao.findByIdIncludingRemoved(backup.getVmId());
AccountVO account = accountDao.findByIdIncludingRemoved(vm.getAccountId());
DomainVO domain = domainDao.findByIdIncludingRemoved(vm.getDomainId());
DataCenterVO zone = dataCenterDao.findByIdIncludingRemoved(vm.getDataCenterId());
Long offeringId = backup.getBackupOfferingId();
if (offeringId == null) {
offeringId = vm.getBackupOfferingId();
}
BackupOffering offering = backupOfferingDao.findByIdIncludingRemoved(offeringId);

BackupResponse response = new BackupResponse();
response.setId(backup.getUuid());
response.setVmId(vm.getUuid());
response.setVmName(vm.getHostName());
response.setExternalId(backup.getExternalId());
response.setType(backup.getType());
response.setDate(backup.getDate());
response.setSize(backup.getSize());
response.setProtectedSize(backup.getProtectedSize());
response.setStatus(backup.getStatus());
// ACS 4.20: For backups taken prior this release the backup.backed_volumes column would be empty hence use vm_instance.backup_volumes
String backedUpVolumes;
if (Objects.isNull(backup.getBackedUpVolumes())) {
backedUpVolumes = new Gson().toJson(vm.getBackupVolumeList().toArray(), Backup.VolumeInfo[].class);
} else {
backedUpVolumes = new Gson().toJson(backup.getBackedUpVolumes().toArray(), Backup.VolumeInfo[].class);
try {
VMInstanceVO vm = vmInstanceDao.findByIdIncludingRemoved(backup.getVmId());
AccountVO account = accountDao.findByIdIncludingRemoved(vm.getAccountId());
DomainVO domain = domainDao.findByIdIncludingRemoved(vm.getDomainId());
DataCenterVO zone = dataCenterDao.findByIdIncludingRemoved(vm.getDataCenterId());
Long offeringId = backup.getBackupOfferingId();

Check warning on line 201 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java#L196-L201

Added lines #L196 - L201 were not covered by tests
if (offeringId == null) {
offeringId = vm.getBackupOfferingId();

Check warning on line 203 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L203 was not covered by tests
}
BackupOffering offering = backupOfferingDao.findByIdIncludingRemoved(offeringId);

Check warning on line 205 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L205 was not covered by tests

BackupResponse response = new BackupResponse();
response.setId(backup.getUuid());
response.setVmId(vm.getUuid());
response.setVmName(vm.getHostName());
response.setExternalId(backup.getExternalId());
response.setType(backup.getType());
response.setDate(backup.getDate());
response.setSize(backup.getSize());
response.setProtectedSize(backup.getProtectedSize());
response.setStatus(backup.getStatus());

Check warning on line 216 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java#L207-L216

Added lines #L207 - L216 were not covered by tests
// ACS 4.20: For backups taken prior this release the backup.backed_volumes column would be empty hence use vm_instance.backup_volumes
String backedUpVolumes;

Check warning on line 218 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L218 was not covered by tests
if (Objects.isNull(backup.getBackedUpVolumes())) {
backedUpVolumes = new Gson().toJson(vm.getBackupVolumeList().toArray(), Backup.VolumeInfo[].class);

Check warning on line 220 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L220 was not covered by tests
} else {
backedUpVolumes = new Gson().toJson(backup.getBackedUpVolumes().toArray(), Backup.VolumeInfo[].class);

Check warning on line 222 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L222 was not covered by tests
}
response.setVolumes(backedUpVolumes);
response.setBackupOfferingId(offering.getUuid());
response.setBackupOffering(offering.getName());
response.setAccountId(account.getUuid());
response.setAccount(account.getAccountName());
response.setDomainId(domain.getUuid());
response.setDomain(domain.getName());
response.setZoneId(zone.getUuid());
response.setZone(zone.getName());
response.setObjectName("backup");
return response;
} catch (Exception e) {
logger.error("Failed to create backup response from Backup [id: {}, vmId: {}] due to: [{}].", backup.getId(), backup.getVmId(), e.getMessage(), e);
return null;

Check warning on line 237 in engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java#L224-L237

Added lines #L224 - L237 were not covered by tests
}
response.setVolumes(backedUpVolumes);
response.setBackupOfferingId(offering.getUuid());
response.setBackupOffering(offering.getName());
response.setAccountId(account.getUuid());
response.setAccount(account.getAccountName());
response.setDomainId(domain.getUuid());
response.setDomain(domain.getName());
response.setZoneId(zone.getUuid());
response.setZone(zone.getName());
response.setObjectName("backup");
return response;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,9 @@
@Column(name = "backup_volumes")
private String backupVolumes;

@Column(name = "backup_name")
private String backupName;

@Column(name = "dynamically_scalable")
protected boolean dynamicallyScalable;

Expand Down Expand Up @@ -591,4 +594,9 @@
public List<Backup.VolumeInfo> getBackupVolumeList() {
return Arrays.asList(new Gson().fromJson(this.backupVolumes, Backup.VolumeInfo[].class));
}

@Override
public String getBackupName() {
return backupName;
}

Check warning on line 601 in engine/schema/src/main/java/org/apache/cloudstack/engine/cloud/entity/api/db/VMEntityVO.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/engine/cloud/entity/api/db/VMEntityVO.java#L599-L601

Added lines #L599 - L601 were not covered by tests
}
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,18 @@ public interface PrimaryDataStoreDao extends GenericDao<StoragePoolVO, Long> {

List<StoragePoolVO> listStoragePoolsWithActiveVolumesByOfferingId(long offeringid);

/**
* Find storage pool by path like. If clusterId is informed, try to find by path like in specified zone and cluster.
* If clusterId is not informed, try to find by path like in specified zone and with clusterId null.
*/
StoragePoolVO findPoolByPathLike(String datastore, Long datacenterId, Long clusterId);

/**
* Find storage pool by name in specified datacenter. If clusterId is informed, try to find by name in specified zone and cluster.
* If clusterId is not informed, try to find by name in specified zone.
*/
StoragePoolVO findPoolByName(String datastore, Long datacenterId, Long clusterId);

Pair<List<Long>, Integer> searchForIdsAndCount(Long storagePoolId, String storagePoolName, Long zoneId,
String path, Long podId, Long clusterId, String address, ScopeType scopeType, StoragePoolStatus status,
String keyword, Filter searchFilter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@
private final SearchBuilder<StoragePoolVO> DcLocalStorageSearch;
private final GenericSearchBuilder<StoragePoolVO, Long> StatusCountSearch;
private final SearchBuilder<StoragePoolVO> ClustersSearch;
private final SearchBuilder<StoragePoolVO> PathLikeSearchClusterWide;
private final SearchBuilder<StoragePoolVO> PathLikeSearchZoneWide;
private final SearchBuilder<StoragePoolVO> NameSearchClusterWide;
private final SearchBuilder<StoragePoolVO> NameSearchZoneWide;
private final SearchBuilder<StoragePoolVO> IdsSearch;

@Inject
Expand Down Expand Up @@ -155,6 +159,26 @@
IdsSearch.and("ids", IdsSearch.entity().getId(), SearchCriteria.Op.IN);
IdsSearch.done();

PathLikeSearchClusterWide = createSearchBuilder();
PathLikeSearchClusterWide.and("path", PathLikeSearchClusterWide.entity().getPath(), Op.LIKE);
PathLikeSearchClusterWide.and("datacenterId", PathLikeSearchClusterWide.entity().getDataCenterId(), Op.EQ);
PathLikeSearchClusterWide.and("clusterId", PathLikeSearchClusterWide.entity().getClusterId(), Op.EQ);
PathLikeSearchClusterWide.done();

PathLikeSearchZoneWide = createSearchBuilder();
PathLikeSearchZoneWide.and("path", PathLikeSearchZoneWide.entity().getPath(), Op.LIKE);
PathLikeSearchZoneWide.and("datacenterId", PathLikeSearchZoneWide.entity().getDataCenterId(), Op.EQ);
PathLikeSearchZoneWide.and("clusterId", PathLikeSearchZoneWide.entity().getClusterId(), Op.NULL);

NameSearchClusterWide = createSearchBuilder();
NameSearchClusterWide.and("name", NameSearchClusterWide.entity().getName(), Op.EQ);
NameSearchClusterWide.and("datacenterId", NameSearchClusterWide.entity().getDataCenterId(), Op.EQ);
NameSearchClusterWide.and("clusterId", NameSearchClusterWide.entity().getClusterId(), Op.EQ);

NameSearchZoneWide = createSearchBuilder();
NameSearchZoneWide.and("name", NameSearchZoneWide.entity().getName(), Op.EQ);
NameSearchZoneWide.and("datacenterId", NameSearchZoneWide.entity().getDataCenterId(), Op.EQ);
NameSearchZoneWide.and("clusterId", NameSearchZoneWide.entity().getClusterId(), Op.NULL);
}

@Override
Expand Down Expand Up @@ -713,6 +737,34 @@
}
}

@Override
public StoragePoolVO findPoolByPathLike(String datastore, Long datacenterId, Long clusterId) {
SearchCriteria<StoragePoolVO> sc = null;

Check warning on line 742 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L741-L742

Added lines #L741 - L742 were not covered by tests
if (clusterId != null) {
sc = PathLikeSearchClusterWide.create();
sc.setParameters("clusterId", clusterId);

Check warning on line 745 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L744-L745

Added lines #L744 - L745 were not covered by tests
} else {
sc = PathLikeSearchZoneWide.create();

Check warning on line 747 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L747

Added line #L747 was not covered by tests
}
sc.setParameters("path", "%/" + datastore);
sc.setParameters("datacenterId", datacenterId);
return findOneBy(sc);
}

Check warning on line 752 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L749-L752

Added lines #L749 - L752 were not covered by tests

@Override
public StoragePoolVO findPoolByName(String datastore, Long datacenterId, Long clusterId) {
SearchCriteria<StoragePoolVO> sc = null;

Check warning on line 756 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L755-L756

Added lines #L755 - L756 were not covered by tests
if (clusterId != null) {
sc = NameSearchClusterWide.create();
sc.setParameters("clusterId", clusterId);

Check warning on line 759 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L758-L759

Added lines #L758 - L759 were not covered by tests
} else {
sc = NameSearchZoneWide.create();

Check warning on line 761 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L761

Added line #L761 was not covered by tests
}
sc.setParameters("name", datastore);
sc.setParameters("datacenterId", datacenterId);
return findOneBy(sc);
}

Check warning on line 766 in engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java#L763-L766

Added lines #L763 - L766 were not covered by tests

@Override
public Pair<List<Long>, Integer> searchForIdsAndCount(Long storagePoolId, String storagePoolName, Long zoneId,
String path, Long podId, Long clusterId, String address, ScopeType scopeType, StoragePoolStatus status,
Expand Down
Loading
Loading