diff --git a/src/datastore_mad/remotes/rsync/backup b/src/datastore_mad/remotes/rsync/backup
index 8fb62c6626..f9f37f8507 100755
--- a/src/datastore_mad/remotes/rsync/backup
+++ b/src/datastore_mad/remotes/rsync/backup
@@ -58,15 +58,16 @@ require 'securerandom'
require_relative '../../tm/lib/datastore'
require_relative '../../tm/lib/tm_action'
-# BACKUP host:remote_dir DISK_ID:..:DISK_ID vm_uuid vm_id ds_id
+# BACKUP host:remote_dir DISK_ID:..:DISK_ID vm_uuid bj_id vm_id ds_id
ds_xml = STDIN.read
dir = ARGV[0].split(':')
_disks = ARGV[1].split(':')
_vm_uuid = ARGV[2]
-vm_id = ARGV[3]
-_ds_id = ARGV[4]
+_bj_id = ARGV[3]
+vm_id = ARGV[4]
+_ds_id = ARGV[5]
vm_host = dir[0]
diff --git a/src/image/ImageManagerActions.cc b/src/image/ImageManagerActions.cc
index 1dede04fd2..50b1032f78 100644
--- a/src/image/ImageManagerActions.cc
+++ b/src/image/ImageManagerActions.cc
@@ -994,7 +994,16 @@ int ImageManager::stat_image(Template* img_tmpl,
{
img_data << ""
<< one_util::xml_escape(res)
- << "";
+ << "";
+
+ img_tmpl->get("BACKUP_JOB_ID", res);
+
+ if (!res.empty())
+ {
+ img_data << "" << res << "";
+ }
+
+ img_data << "";
}
break;
}
diff --git a/src/tm/TransferManager.cc b/src/tm/TransferManager.cc
index 7664ec9ec7..0b68ac03b1 100644
--- a/src/tm/TransferManager.cc
+++ b/src/tm/TransferManager.cc
@@ -2262,7 +2262,10 @@ int TransferManager::backup_transfer_commands(
tm_mad_system = "." + tsys;
}*/
- bool do_volatile = vm->backups().do_volatile();
+ Backups& backups = vm->backups();
+
+ bool do_volatile = backups.do_volatile();
+ int job_id = backups.backup_job_id();
// -------------------------------------------------------------------------
// Image Transfer Commands
@@ -2283,13 +2286,23 @@ int TransferManager::backup_transfer_commands(
disk_str << disk->get_disk_id() << ":";
}
- //BACKUP(.tm_mad_system) tm_mad host:remote_dir DISK_ID:...:DISK_ID deploy_id vmid dsid
+ //BACKUP(.tm_mad_system) tm_mad host:remote_dir DISK_ID:...:DISK_ID deploy_id bj_id vmid dsid
xfr << "BACKUP" << tm_mad_system
<< " " << vm_tm_mad << " "
<< vm->get_hostname() << ":" << vm->get_system_dir() << " "
<< disk_str.str() << " "
- << vm->get_deploy_id() << " "
- << vm->get_oid() << " "
+ << vm->get_deploy_id() << " ";
+
+ if ( job_id == -1 )
+ {
+ xfr << "- ";
+ }
+ else
+ {
+ xfr << job_id << " ";
+ }
+
+ xfr << vm->get_oid() << " "
<< vm->get_ds_id()
<< endl;
diff --git a/src/tm_mad/lib/backup.rb b/src/tm_mad/lib/backup.rb
index 00417332f2..51342725e1 100644
--- a/src/tm_mad/lib/backup.rb
+++ b/src/tm_mad/lib/backup.rb
@@ -23,7 +23,7 @@ module TransferManager
# This class includes methods manage backup images
class BackupImage
- attr_reader :vm_id, :keep_last
+ attr_reader :vm_id, :keep_last, :bj_id
# Given a sorted list of qcow2 files,
# return a shell recipe that reconstructs the backing chain in-place.
@@ -111,6 +111,8 @@ module TransferManager
# be just a single ID in the VMS array.
@vm_id = @action.elements["#{prefix}/VMS/ID"].text.to_i
+ @bj_id = @action.elements["#{prefix}/TEMPLATE/BACKUP_JOB_ID"]&.text
+
@keep_last = @action.elements['/DS_DRIVER_ACTION_DATA/EXTRA_DATA/KEEP_LAST']&.text.to_i
@incr_id = @action.elements['/DS_DRIVER_ACTION_DATA/TEMPLATE/INCREMENT_ID']&.text.to_i
@@ -238,6 +240,8 @@ module TransferManager
@base_url = "#{opts[:proto]}://#{opts[:ds_id]}/#{chain}"
+ @bj_id = opts[:bimage].bj_id
+
return unless no_ip
NIC_LIST << ['IP', 'IP6', 'IP6_ULA', 'IP6_GLOBAL', 'MAC']
@@ -284,6 +288,8 @@ module TransferManager
FROM_BACKUP_DS = "#{@ds_id}"
EOS
+ tmpl << "BACKUP_JOB_ID = \"#{@bj_id}\"" if @bj_id
+
bck_disks[disk_id] = { :template => tmpl, :name => name }
end