]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Add AfterVSS option to RunsWhen runscript option
authorEric Bollengier <eric@eb.homelinux.org>
Thu, 13 Mar 2008 12:51:51 +0000 (12:51 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 13 Mar 2008 12:51:51 +0000 (12:51 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6597 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/dird_conf.c
bacula/src/filed/job.c
bacula/src/lib/runscript.c
bacula/src/lib/runscript.h
bacula/technotes-2.3

index 03d59339791887463b23a97aaea5eeeb640ef620..f5ff79e367bb1407071d695edd96b94b1934a017 100644 (file)
@@ -1729,10 +1729,12 @@ static void store_runscript_when(LEX *lc, RES_ITEM *item, int index, int pass)
       *(int *)(item->value) = SCRIPT_Before ;
    } else if (strcasecmp(lc->str, "after") == 0) {
       *(int *)(item->value) = SCRIPT_After;
+   } else if (strcasecmp(lc->str, "aftervss") == 0) {
+      *(int *)(item->value) = SCRIPT_AfterVSS;
    } else if (strcasecmp(lc->str, "always") == 0) {
       *(int *)(item->value) = SCRIPT_Any;
    } else {
-      scan_err2(lc, _("Expect %s, got: %s"), "Before, After or Always", lc->str);
+      scan_err2(lc, _("Expect %s, got: %s"), "Before, After, AfterVSS or Always", lc->str);
    }
    scan_to_eol(lc);
 }
index d8ee96eacceb1ce9a79477d56d3a80da75dcdbf2..345d1841d762f626e771cf8f38b81e66e156112b 100644 (file)
@@ -1483,6 +1483,7 @@ static int backup_cmd(JCR *jcr)
          berrno be;
          Jmsg(jcr, M_WARNING, 0, _("VSS was not initialized properly. VSS support is disabled. ERR=%s\n"), be.bstrerror());
       } 
+      run_scripts(jcr, jcr->RunScripts, "ClientAfterVSS");
    }
 #endif
 
index 7eaae64e55267deab84323b37ab0cd1705828c95..bac10eb985a0bb21e2fcd2d6296f5d5b7654e1c9 100644 (file)
@@ -116,6 +116,8 @@ int run_scripts(JCR *jcr, alist *runscripts, const char *label)
 
    if (strstr(label, NT_("Before"))) {
       when = SCRIPT_Before;
+   } else if (bstrcmp(label, NT_("ClientAfterVSS"))) {
+      when = SCRIPT_AfterVSS;
    } else {
       when = SCRIPT_After;
    }
@@ -142,6 +144,18 @@ int run_scripts(JCR *jcr, alist *runscripts, const char *label)
          }
       }
 
+      if ((script->when & SCRIPT_AfterVSS) && (when & SCRIPT_AfterVSS)) {
+         if ((script->on_success && (jcr->JobStatus == JS_Blocked))
+            || (script->on_failure && job_canceled(jcr))
+            )
+         {
+            Dmsg4(200, "runscript: Run it because SCRIPT_AfterVSS (%s,%i,%i,%c)\n", 
+                  script->command, script->on_success, script->on_failure,
+                  jcr->JobStatus );
+            runit = true;
+         }
+      }
+
       if ((script->when & SCRIPT_After) && (when & SCRIPT_After)) {
          if ((script->on_success && (jcr->JobStatus == JS_Terminated))
              || (script->on_failure && job_canceled(jcr))
index 921fc11ef2a9a983232857d77fbee17cfdecfb57..3659246c7c99cb128228309ca8493bb4231d1869 100644 (file)
@@ -58,6 +58,7 @@ enum {
    SCRIPT_Never  = 0,
    SCRIPT_After  = (1<<0),      /* AfterJob */
    SCRIPT_Before = (1<<1),      /* BeforeJob */
+   SCRIPT_AfterVSS = (1<<2),   /* BeforeJob and After VSS */
    SCRIPT_Any    = SCRIPT_Before | SCRIPT_After
 };
 
index fa346df8f0cd08884382acf6adb99835668c4990..8b1916c2995b1f79d0f0ba66fc0c46c7e3ecd168 100644 (file)
@@ -2,6 +2,8 @@
 
 General:
 13Mar08
+ebl  Add RunsWhen = AfterVSS to runscript. You can execute a command
+     (restart an application) just after the VSS snapshot on windows.
 kes  Don't zap dcr values during release_volume() as they might
      have the next Volume to be mounted.
 kes  Fix AIX prototype.