]> git.sur5r.net Git - bacula/bacula/commitdiff
Port missing RestoreObject Plugin Config code from BEE.
authorRadosław Korzeniewski <radekk@inteos.pl>
Wed, 22 Nov 2017 13:44:47 +0000 (14:44 +0100)
committerKern Sibbald <kern@sibbald.com>
Sat, 9 Dec 2017 11:00:18 +0000 (12:00 +0100)
bacula/src/dird/restore.c

index 22359e112c43f405a62d4248cf67c7e3437993c6..714846fd4bbaeaaab1dfb73fd50fea0f20dd857f 100644 (file)
@@ -564,8 +564,40 @@ bail_out:
    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;
 }