From: Radosław Korzeniewski Date: Fri, 11 Jun 2021 13:12:33 +0000 (+0200) Subject: metaplugin: Add PrevJobName parameter to JobInfo. X-Git-Tag: Release-11.3.2~496 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e290adf51c740b402a4aa335367c4f181e321f55;p=thirdparty%2Fbacula.git metaplugin: Add PrevJobName parameter to JobInfo. 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. --- diff --git a/bacula/src/plugins/fd/pluginlib/metaplugin.cpp b/bacula/src/plugins/fd/pluginlib/metaplugin.cpp index ccc8be8d4..01cf8a7e2 100644 --- a/bacula/src/plugins/fd/pluginlib/metaplugin.cpp +++ b/bacula/src/plugins/fd/pluginlib/metaplugin.cpp @@ -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: diff --git a/bacula/src/plugins/fd/pluginlib/metaplugin.h b/bacula/src/plugins/fd/pluginlib/metaplugin.h index 2e8408f51..d75e32b6c 100644 --- a/bacula/src/plugins/fd/pluginlib/metaplugin.h +++ b/bacula/src/plugins/fd/pluginlib/metaplugin.h @@ -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);