return false;
}
+/* Create a Plugin Config RestoreObject, will be sent
+ * at restore time to the Plugin
+ */
+static void plugin_create_restoreobject(JCR *jcr, plugin_config_item *elt)
+{
+ ROBJECT_DBR ro;
+ memset(&ro, 0, sizeof(ro));
+ ro.FileIndex = 1;
+ ro.JobId = jcr->JobId;
+ ro.FileType = FT_PLUGIN_CONFIG_FILLED;
+ ro.object_index = 1;
+ ro.object_full_len = ro.object_len = strlen(elt->content);
+ ro.object_compression = 0;
+ ro.plugin_name = elt->plugin_name;
+ ro.object_name = (char*)INI_RESTORE_OBJECT_NAME;
+ ro.object = elt->content;
+ db_create_restore_object_record(jcr, jcr->db, &ro);
+ Dmsg1(50, "Creating restore object for %s\n", elt->plugin_name);
+}
+
bool do_restore_init(JCR *jcr)
{
+ /* Will add RestoreObject used for the Plugin configuration */
+ if (jcr->plugin_config) {
+
+ plugin_config_item *elt;
+ foreach_alist(elt, jcr->plugin_config) {
+ plugin_create_restoreobject(jcr, elt);
+ free_plugin_config_item(elt);
+ }
+
+ delete jcr->plugin_config;
+ jcr->plugin_config = NULL;
+ }
free_wstorage(jcr);
return true;
}
void restore_cleanup(JCR *jcr, int TermCode)
{
char sdt[MAX_TIME_LENGTH], edt[MAX_TIME_LENGTH];
- char ec1[30], ec2[30], ec3[30];
+ char ec1[30], ec2[30], ec3[30], ec4[30], elapsed[50];
char term_code[100], fd_term_msg[100], sd_term_msg[100];
const char *term_msg;
int msg_type = M_INFO;
" Restore Client: %s\n"
" Start time: %s\n"
" End time: %s\n"
+" Elapsed time: %s\n"
" Files Expected: %s\n"
" Files Restored: %s\n"
-" Bytes Restored: %s\n"
+" Bytes Restored: %s (%sB)\n"
" Rate: %.1f KB/s\n"
" FD Errors: %d\n"
" FD termination status: %s\n"
jcr->client->name(),
sdt,
edt,
+ edit_utime(RunTime, elapsed, sizeof(elapsed)),
edit_uint64_with_commas((uint64_t)jcr->ExpectedFiles, ec1),
edit_uint64_with_commas((uint64_t)jcr->jr.JobFiles, ec2),
- edit_uint64_with_commas(jcr->jr.JobBytes, ec3),
+ edit_uint64_with_commas(jcr->jr.JobBytes, ec3), edit_uint64_with_suffix(jcr->jr.JobBytes, ec4),
(float)kbps,
jcr->JobErrors,
fd_term_msg,