]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird_conf.c
Commit backports from 2.3.x
[bacula/bacula] / bacula / src / dird / dird_conf.c
index 74b55992d0de32eb1c243feb92c7e4883e86f5b9..475df3cdf370d4301e8ca43d25412ff263350e2c 100644 (file)
@@ -368,9 +368,11 @@ static RES_ITEM pool_items[] = {
    {"migrationlowbytes", store_size,  ITEM(res_pool.MigrationLowBytes), 0, 0, 0},
    {"nextpool",      store_res,       ITEM(res_pool.NextPool), R_POOL, 0, 0},
    {"storage",       store_alist_res, ITEM(res_pool.storage),  R_STORAGE, 0, 0},
-   {"autoprune",       store_bool,    ITEM(res_pool.AutoPrune), 0, ITEM_DEFAULT, true},
-   {"recycle",         store_bool,    ITEM(res_pool.Recycle),   0, ITEM_DEFAULT, true},
-   {"recyclepool",     store_res,     ITEM(res_pool.RecyclePool), R_POOL, 0, 0},
+   {"autoprune",     store_bool,      ITEM(res_pool.AutoPrune), 0, ITEM_DEFAULT, true},
+   {"recycle",       store_bool,      ITEM(res_pool.Recycle),   0, ITEM_DEFAULT, true},
+   {"recyclepool",   store_res,       ITEM(res_pool.RecyclePool), R_POOL, 0, 0},
+   {"copypool",      store_alist_res, ITEM(res_pool.CopyPool), R_POOL, 0, 0},
+   {"catalog",       store_res,       ITEM(res_pool.Catalog), R_CATALOG, 0, 0},
    {NULL, NULL, {0}, 0, 0, 0}
 };
 
@@ -560,6 +562,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          dump_resource(-R_CATALOG, (RES *)res->res_client.catalog, sendit, sock);
       }
       break;
+
    case R_DEVICE:
       dev = &res->res_dev;
       char ed1[50];
@@ -572,6 +575,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          edit_uint64(dev->PoolId, ed1),
          dev->VolumeName, dev->MediaType);
       break;
+
    case R_STORAGE:
       sendit(sock, _("Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"),
@@ -581,6 +585,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          res->res_store.media_type,
          edit_int64(res->res_store.StorageId, ed1));
       break;
+
    case R_CATALOG:
       sendit(sock, _("Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_user=%s MutliDBConn=%d\n"),
@@ -588,6 +593,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          res->res_cat.db_port, res->res_cat.db_name, NPRT(res->res_cat.db_user),
          res->res_cat.mult_db_connections);
       break;
+
    case R_JOB:
    case R_JOBDEFS:
       sendit(sock, _("%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"),
@@ -616,10 +622,10 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          dump_resource(-R_SCHEDULE, (RES *)res->res_job.schedule, sendit, sock);
       }
       if (res->res_job.RestoreWhere && !res->res_job.RegexWhere) {
-          sendit(sock, _("  --> Where=%s\n"), NPRT(res->res_job.RestoreWhere));
+           sendit(sock, _("  --> Where=%s\n"), NPRT(res->res_job.RestoreWhere));
       }
       if (res->res_job.RegexWhere) {
-          sendit(sock, _("  --> RegexWhere=%s\n"), NPRT(res->res_job.RegexWhere));
+           sendit(sock, _("  --> RegexWhere=%s\n"), NPRT(res->res_job.RegexWhere));
       }
       if (res->res_job.RestoreBootstrap) {
          sendit(sock, _("  --> Bootstrap=%s\n"), NPRT(res->res_job.RestoreBootstrap));
@@ -642,7 +648,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
            sendit(sock, _("  --> Target=%s\n"),  NPRT(script->target));
            sendit(sock, _("  --> RunOnSuccess=%u\n"),  script->on_success);
            sendit(sock, _("  --> RunOnFailure=%u\n"),  script->on_failure);
-           sendit(sock, _("  --> AbortJobOnError=%u\n"),  script->abort_on_error);
+           sendit(sock, _("  --> FailJobOnError=%u\n"),  script->fail_on_error);
            sendit(sock, _("  --> RunWhen=%u\n"),  script->when);
         }
       }
@@ -680,6 +686,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          dump_resource(-R_MSGS, (RES *)res->res_job.messages, sendit, sock);
       }
       break;
+
    case R_FILESET:
    {
       int i, j, k;
@@ -755,6 +762,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       }
       break;
    }
+
    case R_SCHEDULE:
       if (res->res_sch.run) {
          int i;
@@ -842,6 +850,7 @@ next_run:
          sendit(sock, _("Schedule: name=%s\n"), res->res_sch.hdr.name);
       }
       break;
+
    case R_POOL:
       sendit(sock, _("Pool: name=%s PoolType=%s\n"), res->res_pool.hdr.name,
               res->res_pool.pool_type);
@@ -874,6 +883,9 @@ next_run:
       if (res->res_pool.RecyclePool) {
          sendit(sock, _("      RecyclePool=%s\n"), res->res_pool.RecyclePool->name());
       }
+      if (res->res_pool.Catalog) {
+         sendit(sock, _("      Catalog=%s\n"), res->res_pool.Catalog->name());
+      }
       if (res->res_pool.storage) {
          STORE *store;
          foreach_alist(store, res->res_pool.storage) {
@@ -881,7 +893,16 @@ next_run:
             dump_resource(-R_STORAGE, (RES *)store, sendit, sock);
          }
       }
+      if (res->res_pool.CopyPool) {
+         POOL *copy;
+         foreach_alist(copy, res->res_pool.CopyPool) {
+            sendit(sock, _("  --> "));
+            dump_resource(-R_POOL, (RES *)copy, sendit, sock);
+         }
+      }
+
       break;
+
    case R_MSGS:
       sendit(sock, _("Messages: name=%s\n"), res->res_msgs.hdr.name);
       if (res->res_msgs.mail_cmd)
@@ -889,6 +910,7 @@ next_run:
       if (res->res_msgs.operator_cmd)
          sendit(sock, _("      opcmd=%s\n"), res->res_msgs.operator_cmd);
       break;
+
    default:
       sendit(sock, _("Unknown resource type %d in dump_resource.\n"), type);
       break;
@@ -1322,34 +1344,34 @@ void save_resource(int type, RES_ITEM *items, int pass)
          res->res_job.run_cmds   = res_all.res_job.run_cmds;
          res->res_job.RunScripts = res_all.res_job.RunScripts;
 
-        /* TODO: JobDefs where/regexwhere doesn't work well (but this
-         * is not very useful) 
-         * We have to set_bit(index, res_all.hdr.item_present);
-         * or something like that
-         */
+         /* TODO: JobDefs where/regexwhere doesn't work well (but this
+          * is not very useful) 
+          * We have to set_bit(index, res_all.hdr.item_present);
+          * or something like that
+          */
 
          /* we take RegexWhere before all other options */
-        if (!res->res_job.RegexWhere 
-            &&
-            (res->res_job.strip_prefix ||
-             res->res_job.add_suffix   ||
-             res->res_job.add_prefix))
-        {
-           int len = bregexp_get_build_where_size(res->res_job.strip_prefix,
-                                                  res->res_job.add_prefix,
-                                                  res->res_job.add_suffix);
-           res->res_job.RegexWhere = (char *) bmalloc (len * sizeof(char));
-           bregexp_build_where(res->res_job.RegexWhere, len,
-                               res->res_job.strip_prefix,
-                               res->res_job.add_prefix,
-                               res->res_job.add_suffix);
-           /* TODO: test bregexp */
-        }
-
-        if (res->res_job.RegexWhere && res->res_job.RestoreWhere) {
-           free(res->res_job.RestoreWhere);
-           res->res_job.RestoreWhere = NULL;
-        }
+         if (!res->res_job.RegexWhere 
+             &&
+             (res->res_job.strip_prefix ||
+              res->res_job.add_suffix   ||
+              res->res_job.add_prefix))
+         {
+            int len = bregexp_get_build_where_size(res->res_job.strip_prefix,
+                                                   res->res_job.add_prefix,
+                                                   res->res_job.add_suffix);
+            res->res_job.RegexWhere = (char *) bmalloc (len * sizeof(char));
+            bregexp_build_where(res->res_job.RegexWhere, len,
+                                res->res_job.strip_prefix,
+                                res->res_job.add_prefix,
+                                res->res_job.add_suffix);
+            /* TODO: test bregexp */
+         }
+
+         if (res->res_job.RegexWhere && res->res_job.RestoreWhere) {
+            free(res->res_job.RestoreWhere);
+            res->res_job.RestoreWhere = NULL;
+         }
 
          break;
       case R_COUNTER:
@@ -1717,7 +1739,7 @@ static void store_short_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
 
       if (strcmp(item->name, "runbeforejob") == 0) {
          script->when = SCRIPT_Before;
-         script->abort_on_error = true;
+         script->fail_on_error = true;
          script->set_target("");
 
       } else if (strcmp(item->name, "runafterjob") == 0) {
@@ -1737,7 +1759,7 @@ static void store_short_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
          script->old_proto = true;
          script->when = SCRIPT_Before;
          script->set_target("%c");
-         script->abort_on_error = true;
+         script->fail_on_error = true;
 
       } else if (strcmp(item->name, "runafterfailedjob") == 0) {
          script->when = SCRIPT_After;
@@ -1782,7 +1804,8 @@ static RES_ITEM runscript_items[] = {
  {"target",         store_runscript_target,{(char **)&res_runscript},          0,  0, 0}, 
  {"runsonsuccess",  store_runscript_bool, {(char **)&res_runscript.on_success},0,  0, 0},
  {"runsonfailure",  store_runscript_bool, {(char **)&res_runscript.on_failure},0,  0, 0},
- {"abortjobonerror",store_runscript_bool, {(char **)&res_runscript.abort_on_error},0, 0, 0},
+ {"failjobonerror",store_runscript_bool, {(char **)&res_runscript.fail_on_error},0, 0, 0},
+ {"abortjobonerror",store_runscript_bool, {(char **)&res_runscript.fail_on_error},0, 0, 0},
  {"runswhen",       store_runscript_when, {(char **)&res_runscript.when},      0,  0, 0},
  {"runsonclient",   store_runscript_target,{(char **)&res_runscript},          0,  0, 0}, /* TODO */
  {NULL, NULL, {0}, 0, 0, 0}
@@ -1802,7 +1825,7 @@ static void store_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
 
    Dmsg1(200, "store_runscript: begin store_runscript pass=%i\n", pass);
 
-   res_runscript.reset_default();      /* setting on_success, on_failure, abort_on_error */
+   res_runscript.reset_default();      /* setting on_success, on_failure, fail_on_error */
    
    token = lex_get_token(lc, T_SKIP_EOL);