mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
fix backup script
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
parent
0b9db75c4f
commit
00b22d462b
@ -134,8 +134,9 @@ public class NASBackupProvider extends AdapterBase implements BackupProvider, Co
|
||||
throw new CloudRuntimeException("No valid backup repository found for the VM, please check the attached backup offering");
|
||||
}
|
||||
|
||||
final Date creationDate = new Date();
|
||||
final String backupPath = String.format("%s/%s", vm.getInstanceName(),
|
||||
new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new java.util.Date()));
|
||||
new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(creationDate));
|
||||
|
||||
TakeBackupCommand command = new TakeBackupCommand(vm.getInstanceName(), backupPath);
|
||||
command.setBackupRepoType(backupRepository.getType());
|
||||
@ -151,12 +152,12 @@ public class NASBackupProvider extends AdapterBase implements BackupProvider, Co
|
||||
throw new CloudRuntimeException("Operation to initiate backup timed out, please try again");
|
||||
}
|
||||
|
||||
if (answer != null) {
|
||||
if (answer != null && answer.getResult()) {
|
||||
BackupVO backup = new BackupVO();
|
||||
backup.setVmId(vm.getId());
|
||||
backup.setExternalId(backupPath);
|
||||
backup.setType("FULL");
|
||||
backup.setDate(new Date());
|
||||
backup.setDate(creationDate);
|
||||
backup.setSize(answer.getSize());
|
||||
Long virtualSize = 0L;
|
||||
for (final Volume volume: volumeDao.findByInstance(vm.getId())) {
|
||||
|
||||
@ -45,7 +45,7 @@ public class LibvirtTakeBackupCommandWrapper extends CommandWrapper<TakeBackupCo
|
||||
List<String[]> commands = new ArrayList<>();
|
||||
commands.add(new String[]{
|
||||
libvirtComputingResource.getNasBackupPath(),
|
||||
"-b", "backup",
|
||||
"-o", "backup",
|
||||
"-v", vmName,
|
||||
"-t", backupRepoType,
|
||||
"-s", backupRepoAddress,
|
||||
@ -55,11 +55,9 @@ public class LibvirtTakeBackupCommandWrapper extends CommandWrapper<TakeBackupCo
|
||||
|
||||
Pair<Integer, String> result = Script.executePipedCommands(commands, libvirtComputingResource.getCmdsTimeout());
|
||||
|
||||
logger.debug("VM Backup Result: " + result.second() + ", exit code: " + result.first());
|
||||
|
||||
if (result.first() != 0) {
|
||||
logger.debug("Failed to take VM backup: " + result.second());
|
||||
return new BackupAnswer(command, false, result.second());
|
||||
return new BackupAnswer(command, false, result.second().trim());
|
||||
}
|
||||
|
||||
List<String> outputLines = Arrays.asList(result.second().trim().split("\n"));
|
||||
@ -68,7 +66,7 @@ public class LibvirtTakeBackupCommandWrapper extends CommandWrapper<TakeBackupCo
|
||||
backupSize = Long.parseLong(outputLines.get(outputLines.size()-1).trim());
|
||||
}
|
||||
|
||||
BackupAnswer answer = new BackupAnswer(command, true, result.second());
|
||||
BackupAnswer answer = new BackupAnswer(command, true, result.second().trim());
|
||||
answer.setSize(backupSize);
|
||||
return answer;
|
||||
}
|
||||
|
||||
@ -43,24 +43,31 @@ backup_vm() {
|
||||
deviceId=0
|
||||
name="root"
|
||||
echo "<domainbackup mode='push'><disks>" > $dest/backup.xml
|
||||
for disk in $(virsh -c qemu:///system domblklist $vm --details 2>/dev/null | awk '/disk/{print$3}'); do
|
||||
echo "<disk name='$disk' backup='yes' type='file' backupmode='full'><driver type='qcow2'/><target file='$dest/$deviceId.$name.$disk' /></disk>" >> $dest/backup.xml
|
||||
for disk in $(virsh -c qemu:///system domblklist $VM --details 2>/dev/null | awk '/disk/{print$3}'); do
|
||||
volpath=$(virsh -c qemu:///system domblklist $VM --details | awk "/$disk/{print $4}" | sed 's/.*\///')
|
||||
echo "<disk name='$disk' backup='yes' type='file' backupmode='full'><driver type='qcow2'/><target file='$dest/$deviceId.$name.$volpath.qcow2' /></disk>" >> $dest/backup.xml
|
||||
deviceId=$((devideId+1))
|
||||
name="datadisk"
|
||||
done
|
||||
echo "</disks></domainbackup>" >> $dest/backup.xml
|
||||
|
||||
virsh -c qemu:///system backup-begin --domain $vm --backupxml $dest/backup.xml > /dev/null 2>/dev/null
|
||||
virsh -c qemu:///system dumpxml $vm > $dest/domain-$vm.xml 2>/dev/null
|
||||
# Start push backup
|
||||
virsh -c qemu:///system backup-begin --domain $VM --backupxml $dest/backup.xml > /dev/null 2>/dev/null
|
||||
|
||||
until virsh -c qemu:///system domjobinfo $vm --completed --keep-completed 2>/dev/null | grep "Completed" > /dev/null; do
|
||||
# Backup domain information
|
||||
virsh -c qemu:///system dumpxml $VM > $dest/domain-config.xml 2>/dev/null
|
||||
virsh -c qemu:///system dominfo $VM > $dest/dominfo.xml 2>/dev/null
|
||||
virsh -c qemu:///system domiflist $VM > $dest/domiflist.xml 2>/dev/null
|
||||
virsh -c qemu:///system domblklist $VM > $dest/domblklist.xml 2>/dev/null
|
||||
|
||||
until virsh -c qemu:///system domjobinfo $VM --completed --keep-completed 2>/dev/null | grep "Completed" > /dev/null; do
|
||||
sleep 5
|
||||
done
|
||||
rm -f $dest/backup.xml
|
||||
sync
|
||||
|
||||
# Print statistics
|
||||
virsh -c qemu:///system domjobinfo $vm --completed
|
||||
virsh -c qemu:///system domjobinfo $VM --completed
|
||||
du -sb $dest | cut -f1
|
||||
|
||||
umount $mount_point
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user