]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
metaplugin: Add PrevJobName parameter to JobInfo.
authorRadosław Korzeniewski <radoslaw@korzeniewski.net>
Fri, 11 Jun 2021 13:12:33 +0000 (15:12 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:03:02 +0000 (09:03 +0100)
If you want to add an automatic JobInfo variable then main plugin
file should define the following variable:
const bool CUSTOMPREVJOBNAME = true;
This variable is now required for a successful build of the plugin.

bacula/src/plugins/fd/pluginlib/metaplugin.cpp
bacula/src/plugins/fd/pluginlib/metaplugin.h

index ccc8be8d4785d0414a0f3f4f982612cedf6bae70..01cf8a7e21bf27b014b7b729ff1b85c0079b1f1e 100644 (file)
@@ -180,7 +180,8 @@ METAPLUGIN::METAPLUGIN(bpContext *bpctx) :
       acldata(PM_MESSAGE),
       xattrdatalen(0),
       xattrdata(PM_MESSAGE),
-      metadatas_list(10, true)
+      metadatas_list(10, true),
+      prevjobname(NULL)
 {
    /* TODO: we have a ctx variable stored internally, decide if we use it
     * for every method or rip it off as not required in our code */
@@ -730,6 +731,16 @@ bRC METAPLUGIN::send_jobinfo(bpContext *ctx, char type)
          return bRC_Error;
       }
    }
+
+   if (CUSTOMPREVJOBNAME && prevjobname){
+      Mmsg(cmd, "PrevJobName=%s\n", prevjobname);
+      rc = backend.ctx->write_command(ctx, cmd);
+      if (rc < 0){
+         /* error */
+         return bRC_Error;
+      }
+   }
+
    backend.ctx->signal_eod(ctx);
 
    if (!backend.ctx->read_ack(ctx)){
@@ -1163,11 +1174,15 @@ bRC METAPLUGIN::handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
    bRC status;
    POOL_MEM tmp;
 
-   switch (event->eventType) {
+   switch (event->eventType)
+   {
    case bEventJobStart:
       DMSG(ctx, D3, "bEventJobStart value=%s\n", NPRT((char *)value));
       getBaculaVar(bVarJobId, (void *)&JobId);
       getBaculaVar(bVarJobName, (void *)&JobName);
+      if (CUSTOMPREVJOBNAME){
+         getBaculaVar(bVarPrevJobName, (void *)&prevjobname);
+      }
       break;
 
    case bEventJobEnd:
index 2e8408f51108e3fa37fbc010184cf85b220c0ebe..d75e32b6cd0820ddc6370824571eebfde1fe8a7a 100644 (file)
@@ -62,6 +62,7 @@ extern const char *PLUGIN_DESCRIPTION;
 extern const char *PLUGINPREFIX;       /// is used for prefixing every Job and Debug messages generted by a plugin
 extern const char *PLUGINNAME;         /// should match the backend $pluginname$ used for Handshake procedure
 extern const bool CUSTOMNAMESPACE;     /// defines if metaplugin should send `Namespace=...` backend plugin parameter using PLUGINNAMESPACE variable
+extern const bool CUSTOMPREVJOBNAME;   /// defines if metaplugin should send `PrevJobName=...` backend plugin parameter from bacula variable
 extern const char *PLUGINNAMESPACE;    /// custom backend plugin namespace used as file name prefix
 extern const char *PLUGINAPI;
 extern const char *BACKEND_CMD;
@@ -179,6 +180,7 @@ private:
    ConfigFile ini;               // Restore ini file handler
    alist metadatas_list;         //
    plugin_metadata metadatas;    //
+   const char *prevjobname;      // this is a bVarPrevJobName parameter if requested
 
    bRC parse_plugin_command(bpContext *ctx, const char *command, alist *params);
    bRC parse_plugin_restoreobj(bpContext *ctx, restore_object_pkt *rop);