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