Search in sources :

Example 1 with Backup

use of org.apache.cloudstack.backup.Backup in project cloudstack by apache.

the class BackupDaoImpl method syncBackups.

@Override
public List<Backup> syncBackups(Long zoneId, Long vmId, List<Backup> externalBackups) {
    for (Backup backup : externalBackups) {
        BackupVO backupVO = getBackupVO(backup);
        persist(backupVO);
    }
    return listByVmId(zoneId, vmId);
}
Also used : Backup(org.apache.cloudstack.backup.Backup) BackupVO(org.apache.cloudstack.backup.BackupVO)

Example 2 with Backup

use of org.apache.cloudstack.backup.Backup in project cloudstack by apache.

the class ListBackupsCmd method setupResponseBackupList.

// ///////////////////////////////////////////////////
// ///////////// API Implementation///////////////////
// ///////////////////////////////////////////////////
protected void setupResponseBackupList(final List<Backup> backups, final Integer count) {
    final List<BackupResponse> responses = new ArrayList<>();
    for (Backup backup : backups) {
        if (backup == null) {
            continue;
        }
        BackupResponse backupResponse = _responseGenerator.createBackupResponse(backup);
        responses.add(backupResponse);
    }
    final ListResponse<BackupResponse> response = new ListResponse<>();
    response.setResponses(responses, count);
    response.setResponseName(getCommandName());
    setResponseObject(response);
}
Also used : ListResponse(org.apache.cloudstack.api.response.ListResponse) Backup(org.apache.cloudstack.backup.Backup) ArrayList(java.util.ArrayList) BackupResponse(org.apache.cloudstack.api.response.BackupResponse)

Example 3 with Backup

use of org.apache.cloudstack.backup.Backup in project cloudstack by apache.

the class VMwareGuru method isRootDisk.

/**
 * Check if disk is ROOT disk
 */
private boolean isRootDisk(VirtualDisk disk, Map<VirtualDisk, VolumeVO> disksMapping, Backup backup) {
    if (!disksMapping.containsKey(disk)) {
        return false;
    }
    VolumeVO volumeVO = disksMapping.get(disk);
    if (volumeVO == null) {
        final VMInstanceVO vm = _vmDao.findByIdIncludingRemoved(backup.getVmId());
        if (vm == null) {
            throw new CloudRuntimeException("Failed to find the volumes details from the VM backup");
        }
        List<Backup.VolumeInfo> backedUpVolumes = vm.getBackupVolumeList();
        for (Backup.VolumeInfo backedUpVolume : backedUpVolumes) {
            if (backedUpVolume.getSize().equals(disk.getCapacityInBytes())) {
                return backedUpVolume.getType().equals(Volume.Type.ROOT);
            }
        }
    } else {
        return volumeVO.getVolumeType().equals(Volume.Type.ROOT);
    }
    throw new CloudRuntimeException("Could not determinate ROOT disk for VM to import");
}
Also used : VolumeVO(com.cloud.storage.VolumeVO) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) Backup(org.apache.cloudstack.backup.Backup) VMInstanceVO(com.cloud.vm.VMInstanceVO) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo)

Example 4 with Backup

use of org.apache.cloudstack.backup.Backup in project cloudstack by apache.

the class VMwareGuru method createVolume.

private VolumeVO createVolume(VirtualDisk disk, VirtualMachineMO vmToImport, long domainId, long zoneId, long accountId, long instanceId, Long poolId, long templateId, Backup backup, boolean isImport) throws Exception {
    VMInstanceVO vm = _vmDao.findByIdIncludingRemoved(backup.getVmId());
    if (vm == null) {
        throw new CloudRuntimeException("Failed to find the backup volume information from the VM backup");
    }
    List<Backup.VolumeInfo> backedUpVolumes = vm.getBackupVolumeList();
    Volume.Type type = Volume.Type.DATADISK;
    Long size = disk.getCapacityInBytes();
    if (isImport) {
        for (Backup.VolumeInfo volumeInfo : backedUpVolumes) {
            if (volumeInfo.getSize().equals(disk.getCapacityInBytes())) {
                type = volumeInfo.getType();
            }
        }
    }
    VirtualDeviceBackingInfo backing = disk.getBacking();
    checkBackingInfo(backing);
    VirtualDiskFlatVer2BackingInfo info = (VirtualDiskFlatVer2BackingInfo) backing;
    String volumeName = getVolumeName(disk, vmToImport);
    Storage.ProvisioningType provisioningType = getProvisioningType(info);
    long diskOfferingId = getDiskOfferingId(size, provisioningType);
    Integer unitNumber = disk.getUnitNumber();
    VirtualMachineDiskInfo diskInfo = getDiskInfo(vmToImport, poolId, volumeName);
    return createVolumeRecord(type, volumeName, zoneId, domainId, accountId, diskOfferingId, provisioningType, size, instanceId, poolId, templateId, unitNumber, diskInfo);
}
Also used : Backup(org.apache.cloudstack.backup.Backup) VMInstanceVO(com.cloud.vm.VMInstanceVO) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo) VirtualDeviceBackingInfo(com.vmware.vim25.VirtualDeviceBackingInfo) VirtualDiskFlatVer2BackingInfo(com.vmware.vim25.VirtualDiskFlatVer2BackingInfo) Storage(com.cloud.storage.Storage) Volume(com.cloud.storage.Volume) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) VirtualMachineDiskInfo(org.apache.cloudstack.utils.volume.VirtualMachineDiskInfo)

Example 5 with Backup

use of org.apache.cloudstack.backup.Backup in project cloudstack by apache.

the class VMwareGuru method getDisksMapping.

private Map<VirtualDisk, VolumeVO> getDisksMapping(Backup backup, List<VirtualDisk> virtualDisks) {
    final VMInstanceVO vm = _vmDao.findByIdIncludingRemoved(backup.getVmId());
    if (vm == null) {
        throw new CloudRuntimeException("Failed to find the volumes details from the VM backup");
    }
    List<Backup.VolumeInfo> backedUpVolumes = vm.getBackupVolumeList();
    Map<String, Boolean> usedVols = new HashMap<>();
    Map<VirtualDisk, VolumeVO> map = new HashMap<>();
    for (Backup.VolumeInfo backedUpVol : backedUpVolumes) {
        for (VirtualDisk disk : virtualDisks) {
            if (!map.containsKey(disk) && backedUpVol.getSize().equals(disk.getCapacityInBytes()) && !usedVols.containsKey(backedUpVol.getUuid())) {
                String volId = backedUpVol.getUuid();
                VolumeVO vol = _volumeDao.findByUuidIncludingRemoved(volId);
                usedVols.put(backedUpVol.getUuid(), true);
                map.put(disk, vol);
                s_logger.debug("VM restore mapping for disk " + disk.getBacking() + " (capacity: " + toHumanReadableSize(disk.getCapacityInBytes()) + ") with volume ID" + vol.getId());
            }
        }
    }
    return map;
}
Also used : HashMap(java.util.HashMap) Backup(org.apache.cloudstack.backup.Backup) VMInstanceVO(com.cloud.vm.VMInstanceVO) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo) VirtualDisk(com.vmware.vim25.VirtualDisk) VolumeVO(com.cloud.storage.VolumeVO) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException)

Aggregations

Backup (org.apache.cloudstack.backup.Backup)6 VMInstanceVO (com.cloud.vm.VMInstanceVO)4 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)3 VolumeInfo (org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo)3 VolumeVO (com.cloud.storage.VolumeVO)2 BackupResponse (org.apache.cloudstack.api.response.BackupResponse)2 DataCenterVO (com.cloud.dc.DataCenterVO)1 DomainVO (com.cloud.domain.DomainVO)1 Storage (com.cloud.storage.Storage)1 Volume (com.cloud.storage.Volume)1 AccountVO (com.cloud.user.AccountVO)1 Gson (com.google.gson.Gson)1 VirtualDeviceBackingInfo (com.vmware.vim25.VirtualDeviceBackingInfo)1 VirtualDisk (com.vmware.vim25.VirtualDisk)1 VirtualDiskFlatVer2BackingInfo (com.vmware.vim25.VirtualDiskFlatVer2BackingInfo)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 ListResponse (org.apache.cloudstack.api.response.ListResponse)1 BackupOffering (org.apache.cloudstack.backup.BackupOffering)1 BackupVO (org.apache.cloudstack.backup.BackupVO)1