]> git.sur5r.net Git - bacula/bacula/commitdiff
Second cut ANSI labels
authorKern Sibbald <kern@sibbald.com>
Wed, 2 Feb 2005 22:04:00 +0000 (22:04 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 2 Feb 2005 22:04:00 +0000 (22:04 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1811 91ce42f0-d328-0410-95d8-f526ca767f89

16 files changed:
bacula/examples/python/EndJob.py
bacula/scripts/mtx-changer.in
bacula/src/cats/make_mysql_tables.in
bacula/src/cats/make_postgresql_tables.in
bacula/src/cats/make_sqlite3_tables.in
bacula/src/cats/make_sqlite_tables.in
bacula/src/cats/sql_create.c
bacula/src/cats/sql_get.c
bacula/src/cats/sql_list.c
bacula/src/cats/sql_update.c
bacula/src/cats/update_mysql_tables.in
bacula/src/cats/update_postgresql_tables.in
bacula/src/cats/update_sqlite3_tables.in
bacula/src/cats/update_sqlite_tables.in
bacula/src/dird/dird_conf.c
bacula/src/stored/label.c

index 282ac7c6eef0a54f8250d2f35c01d2af91352464..f9528eb5cda7092c3c90aa66e1a8ebd1d523c616 100644 (file)
@@ -4,7 +4,7 @@ def EndJob(j):
     jobid = bacula.get(j, "JobId")
     client = bacula.get(j, "Client") 
     bacula.set(jcr=j, JobReport="Python EndJob output: JobId=%d Client=%s.\n" % (jobid, client))
-    if (jobid < 5) :
+    if (jobid < 2) :
        startid = bacula.run(j, "run kernsave")
        print "Python started new Job: jobid=", startid
 
index d93c77fdd5062dcfc016091697ac2ddfb41a109b..f0c885ac11c83beb799b5279c792c3204d6e8eb0 100644 (file)
@@ -36,18 +36,17 @@ MTX=@MTX@
 #   waiting a maximum of 180 seconds.
 # Note, this is very system dependent, so if you are
 #   not running on Linux, you will probably need to
-#   re-write it.
-#
-# If you have a FreeBSD system, you might want to change
-#  the $(seq 180) to $(jot 180) -- tip from Brian McDonald
+#   re-write it, or at least change the grep target.
 #
 wait_for_drive() {
-  for i in $(seq 180); do   # Wait max 180 seconds
+  i=0 
+  while [ $i -le 180 ]; do  # Wait max 180 seconds
     if mt -f $1 status | grep ONLINE  >/dev/null 2>&1; then
       break
     fi
 #   echo "Device $1 - not ready, retrying..."
     sleep 1
+    i=`expr $i + 1`
   done
 }
 
index b9f96246546d9114eeaec51ce11f7964688b9a37..425382102b2807ad41dc8379150f18c34821eb23 100644 (file)
@@ -185,6 +185,7 @@ CREATE TABLE Pool (
    AutoPrune TINYINT DEFAULT 0,
    Recycle TINYINT DEFAULT 0,
    PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
+   LabelType TINYINT NOT NULL DEFAULT 0,
    LabelFormat TINYBLOB,
    Enabled TINYINT DEFAULT 1,
    ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
index d6fde78152922aa059539ae51d22ded1d06aabdc..93cfb786e05d5b6cd95f00ad3faa9f3dac998c25 100644 (file)
@@ -197,8 +197,9 @@ CREATE TABLE pool
     recycle          smallint    not null default 0,
     pooltype         text                          
        check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))),
-    labelformat       text                 not null,
-    enabled          smallint              not null default 1,
+    labeltype        integer     not null default 0,
+    labelformat       text       not null,
+    enabled          smallint    not null default 1,
     scratchpoolid     integer,                      
     recyclepoolid     integer,
     primary key (poolid)
index 7c46bb387fd8842d081895ed6359296c54c10f73..fdaee106753e7123563b2dd03376a2460a3872d4 100644 (file)
@@ -186,6 +186,7 @@ CREATE TABLE Pool (
    AutoPrune TINYINT DEFAULT 0,
    Recycle TINYINT DEFAULT 0,
    PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
    LabelFormat VARCHAR(128) NOT NULL,
    Enabled TINYINT DEFAULT 1,
    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
index 7c46bb387fd8842d081895ed6359296c54c10f73..fdaee106753e7123563b2dd03376a2460a3872d4 100644 (file)
@@ -186,6 +186,7 @@ CREATE TABLE Pool (
    AutoPrune TINYINT DEFAULT 0,
    Recycle TINYINT DEFAULT 0,
    PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
    LabelFormat VARCHAR(128) NOT NULL,
    Enabled TINYINT DEFAULT 1,
    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
index 689d4dcc3ec444a2182df98127dd9f75c01145dd..4dd809878aafbbbbbc072fb55f25051d532c10d3 100644 (file)
@@ -181,8 +181,8 @@ db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
    Mmsg(mdb->cmd,
 "INSERT INTO Pool (Name,NumVols,MaxVols,UseOnce,UseCatalog,"
 "AcceptAnyVolume,AutoPrune,Recycle,VolRetention,VolUseDuration,"
-"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelFormat) "
-"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')",
+"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelType,LabelFormat) "
+"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s',%d,'%s')",
                  pr->Name,
                  pr->NumVols, pr->MaxVols,
                  pr->UseOnce, pr->UseCatalog,
@@ -192,7 +192,7 @@ db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
                  edit_uint64(pr->VolUseDuration, ed2),
                  pr->MaxVolJobs, pr->MaxVolFiles,
                  edit_uint64(pr->MaxVolBytes, ed3),
-                 pr->PoolType, pr->LabelFormat);
+                 pr->PoolType, pr->LabelType, pr->LabelFormat);
    Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
    if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"),
index eab5f76aaf59bcc7e3ee9005f2e8ae94bd316fe1..8e10b42f8d574f2be8387b77563eae370c6187f3 100644 (file)
@@ -103,14 +103,18 @@ int db_get_file_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr, FILE_DBR *fdbr)
 {
    SQL_ROW row;
    int stat = 0;
+   char ed1[50], ed2[50], ed3[50];
 
    if (jcr->JobLevel == L_VERIFY_DISK_TO_CATALOG) {
    Mmsg(mdb->cmd,
 "SELECT FileId, LStat, MD5 FROM File,Job WHERE "
-"File.JobId=Job.JobId AND File.PathId=%u AND "
-"File.FilenameId=%u AND Job.Type='B' AND Job.JobSTATUS='T' AND "
-"ClientId=%u ORDER BY StartTime DESC LIMIT 1",
-      fdbr->PathId, fdbr->FilenameId, jr->ClientId);
+"File.JobId=Job.JobId AND File.PathId=%s AND "
+"File.FilenameId=%s AND Job.Type='B' AND Job.JobSTATUS='T' AND "
+"ClientId=%s ORDER BY StartTime DESC LIMIT 1",
+      edit_int64(fdbr->PathId, ed1), 
+      edit_int64(fdbr->FilenameId, ed2), 
+      edit_int64(jr->ClientId,ed3));
+
    } else {
       Mmsg(mdb->cmd,
 "SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%u AND File.PathId=%u AND "
@@ -260,6 +264,7 @@ static int db_get_path_record(JCR *jcr, B_DB *mdb)
 int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    SQL_ROW row;
+   char ed1[50];
 
    db_lock(mdb);
    if (jr->JobId == 0) {
@@ -271,7 +276,8 @@ int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
       Mmsg(mdb->cmd, "SELECT VolSessionId,VolSessionTime,"
 "PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus,"
 "Type,Level,ClientId "
-"FROM Job WHERE JobId=%u", jr->JobId);
+"FROM Job WHERE JobId=%s", 
+         edit_int64(jr->JobId, ed1));
     }
 
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
@@ -287,7 +293,7 @@ int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 
    jr->VolSessionId = str_to_uint64(row[0]);
    jr->VolSessionTime = str_to_uint64(row[1]);
-   jr->PoolId = str_to_uint64(row[2]);
+   jr->PoolId = str_to_int64(row[2]);
    bstrncpy(jr->cStartTime, row[3]!=NULL?row[3]:"", sizeof(jr->cStartTime));
    bstrncpy(jr->cEndTime, row[4]!=NULL?row[4]:"", sizeof(jr->cEndTime));
    jr->JobFiles = atol(row[5]);
@@ -327,7 +333,7 @@ int db_get_job_volume_names(JCR *jcr, B_DB *mdb, JobId_t JobId, POOLMEM **Volume
         "SELECT VolumeName,MAX(VolIndex) FROM JobMedia,Media WHERE "
         "JobMedia.JobId=%s AND JobMedia.MediaId=Media.MediaId "
         "GROUP BY VolumeName "
-        "ORDER BY 2 ASC", edit_uint64(JobId,ed1));
+        "ORDER BY 2 ASC", edit_int64(JobId,ed1));
 
    Dmsg1(130, "VolNam=%s\n", mdb->cmd);
    *VolumeNames[0] = 0;
@@ -527,18 +533,21 @@ int db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr)
 {
    SQL_ROW row;
    int stat = 0;
+   char ed1[50];
 
    db_lock(mdb);
    if (pdbr->PoolId != 0) {              /* find by id */
       Mmsg(mdb->cmd,
 "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
 "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
-"MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.PoolId=%u", pdbr->PoolId);
+"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.PoolId=%s", 
+        edit_int64(pdbr->PoolId, ed1));
    } else {                          /* find by name */
       Mmsg(mdb->cmd,
 "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
 "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
-"MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name);
+"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.Name='%s'", 
+        pdbr->Name);
    }
 
    if (QUERY_DB(jcr, mdb, mdb->cmd)) {
@@ -567,8 +576,9 @@ int db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr)
            pdbr->MaxVolJobs = str_to_int64(row[11]);
            pdbr->MaxVolFiles = str_to_int64(row[12]);
            pdbr->MaxVolBytes = str_to_uint64(row[13]);
-            bstrncpy(pdbr->PoolType, row[13]!=NULL?row[14]:"", sizeof(pdbr->PoolType));
-            bstrncpy(pdbr->LabelFormat, row[14]!=NULL?row[15]:"", sizeof(pdbr->LabelFormat));
+            bstrncpy(pdbr->PoolType, row[14]!=NULL?row[14]:"", sizeof(pdbr->PoolType));
+           pdbr->LabelType = str_to_int64(row[15]);
+            bstrncpy(pdbr->LabelFormat, row[16]!=NULL?row[16]:"", sizeof(pdbr->LabelFormat));
            stat = pdbr->PoolId;
         }
       } else {
@@ -593,12 +603,14 @@ int db_get_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cdbr)
 {
    SQL_ROW row;
    int stat = 0;
+   char ed1[50];
 
    db_lock(mdb);
    if (cdbr->ClientId != 0) {              /* find by id */
       Mmsg(mdb->cmd,
 "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention "
-"FROM Client WHERE Client.ClientId=%u", cdbr->ClientId);
+"FROM Client WHERE Client.ClientId=%s", 
+       edit_int64(cdbr->ClientId, ed1));
    } else {                          /* find by name */
       Mmsg(mdb->cmd,
 "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention "
@@ -608,7 +620,6 @@ int db_get_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cdbr)
    if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
-        char ed1[30];
          Mmsg1(&mdb->errmsg, _("More than one Client!: %s\n"),
            edit_uint64(mdb->num_rows, ed1));
          Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
@@ -698,12 +709,14 @@ int db_get_fileset_record(JCR *jcr, B_DB *mdb, FILESET_DBR *fsr)
 {
    SQL_ROW row;
    int stat = 0;
+   char ed1[50];
 
    db_lock(mdb);
    if (fsr->FileSetId != 0) {              /* find by id */
       Mmsg(mdb->cmd,
            "SELECT FileSetId,FileSet,MD5,CreateTime FROM FileSet "
-           "WHERE FileSetId=%u", fsr->FileSetId);
+           "WHERE FileSetId=%s", 
+          edit_int64(fsr->FileSetId, ed1));
    } else {                          /* find by name */
       Mmsg(mdb->cmd,
            "SELECT FileSetId,FileSet,CreateTime,MD5 FROM FileSet "
@@ -721,7 +734,7 @@ int db_get_fileset_record(JCR *jcr, B_DB *mdb, FILESET_DBR *fsr)
       if ((row = sql_fetch_row(mdb)) == NULL) {
          Mmsg1(&mdb->errmsg, _("FileSet record \"%s\" not found.\n"), fsr->FileSet);
       } else {
-        fsr->FileSetId = atoi(row[0]);
+        fsr->FileSetId = str_to_int64(row[0]);
          bstrncpy(fsr->FileSet, row[1]!=NULL?row[1]:"", sizeof(fsr->FileSet));
          bstrncpy(fsr->MD5, row[2]!=NULL?row[2]:"", sizeof(fsr->MD5));
          bstrncpy(fsr->cCreateTime, row[3]!=NULL?row[3]:"", sizeof(fsr->cCreateTime));
@@ -768,10 +781,12 @@ int db_get_media_ids(JCR *jcr, B_DB *mdb, uint32_t PoolId, int *num_ids, uint32_
    int stat = 0;
    int i = 0;
    uint32_t *id;
+   char ed1[50];
 
    db_lock(mdb);
    *ids = NULL;
-   Mmsg(mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%u", PoolId);
+   Mmsg(mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%s", 
+       edit_int64(PoolId, ed1));
    if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       *num_ids = sql_num_rows(mdb);
       if (*num_ids > 0) {
@@ -802,6 +817,7 @@ int db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
 {
    SQL_ROW row;
    int stat = 0;
+   char ed1[50];
 
    db_lock(mdb);
    if (mr->MediaId == 0 && mr->VolumeName[0] == 0) {
@@ -816,7 +832,8 @@ int db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
          "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
          "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
          "EndFile,EndBlock,VolParts,LabelType "
-         "FROM Media WHERE MediaId=%u", mr->MediaId);
+         "FROM Media WHERE MediaId=%s", 
+        edit_int64(mr->MediaId, ed1));
    } else {                          /* find by name */
       Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
          "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
index 794a67647952c25325ac9eb16c1e3a005bc7ad24..c6672a288e15bfdd48f5c8cf8bf03043b8378079 100644 (file)
@@ -82,8 +82,8 @@ db_list_pool_records(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, e_
       Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,"
          "AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes,"
          "AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId,"
-         "RecyclePoolId "
-          "FROM Pool ORDER BY PoolId");
+         "RecyclePoolId,LabelType "
+         FROM Pool ORDER BY PoolId");
    } else {
       Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
         "FROM Pool ORDER BY PoolId");
@@ -141,16 +141,16 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
             "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
             "VolCapacityBytes,VolStatus,Recycle,VolRetention,"
             "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
-            "EndFile,EndBlock,VolParts,LabelType "
-            "FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName);
+            "EndFile,EndBlock,VolParts,LabelType"
+            " FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName);
       } else {
          Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
             "MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
             "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
             "VolCapacityBytes,VolStatus,Recycle,VolRetention,"
             "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
-            "EndFile,EndBlock,VolParts,LabelType "
-            "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+            "EndFile,EndBlock,VolParts,LabelType"
+            " FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
       }
    } else {
       if (mdbr->VolumeName[0] != 0) {
index e007bdf2e9a55ec181af130fd6007d546dfc7948..5c8b76f6ccce64923e953bd4ec821c53a9e0da8f 100644 (file)
@@ -227,21 +227,22 @@ int
 db_update_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
 {
    int stat;
-   char ed1[50], ed2[50], ed3[50];
+   char ed1[50], ed2[50], ed3[50], ed4[50];
 
    db_lock(mdb);
    Mmsg(mdb->cmd,
 "UPDATE Pool SET NumVols=%u,MaxVols=%u,UseOnce=%d,UseCatalog=%d,"
 "AcceptAnyVolume=%d,VolRetention='%s',VolUseDuration='%s',"
 "MaxVolJobs=%u,MaxVolFiles=%u,MaxVolBytes=%s,Recycle=%d,"
-"AutoPrune=%d,LabelFormat='%s' WHERE PoolId=%u",
+"AutoPrune=%d,LabelType=%d,LabelFormat='%s' WHERE PoolId=%s",
       pr->NumVols, pr->MaxVols, pr->UseOnce, pr->UseCatalog,
       pr->AcceptAnyVolume, edit_uint64(pr->VolRetention, ed1),
       edit_uint64(pr->VolUseDuration, ed2),
       pr->MaxVolJobs, pr->MaxVolFiles,
       edit_uint64(pr->MaxVolBytes, ed3),
-      pr->Recycle, pr->AutoPrune,
-      pr->LabelFormat, pr->PoolId);
+      pr->Recycle, pr->AutoPrune, pr->LabelType,
+      pr->LabelFormat, 
+      edit_int64(pr->PoolId, ed4));
 
    stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
@@ -272,7 +273,7 @@ db_update_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
       localtime_r(&ttime, &tm);
       strftime(dt, sizeof(dt), "%Y-%m-%d %T", &tm);
       Mmsg(mdb->cmd, "UPDATE Media SET FirstWritten='%s'"
-" WHERE VolumeName='%s'", dt, mr->VolumeName);
+           " WHERE VolumeName='%s'", dt, mr->VolumeName);
       stat = UPDATE_DB(jcr, mdb, mdb->cmd);
       Dmsg1(400, "Firstwritten stat=%d\n", stat);
    }
index f1bd2a7b518519901e893ea279d940ebb36ac707..7d6e579e863cb039119ff255eafb5265842424e5 100755 (executable)
@@ -13,6 +13,7 @@ if $bindir/mysql $* -f <<END-OF-DATA
 USE bacula;
 
 ALTER TABLE Media ADD COLUMN LabelType INTEGER UNSIGNED NOT NULL DEFAULT 0;
+ALTER TABLE Pool  ADD COLUMN LabelType INTEGER UNSIGNED NOT NULL DEFAULT 0;
 ALTER TABLE Media ADD COLUMN VolParts INTEGER UNSIGNED NOT NULL DEFAULT 0;
 
 END-OF-DATA
index 0e69e39a747334c7dd1e58220dbac10e6efcdb3d..5be47510e7b7356c3b2d5621342cd8e1a206e8a4 100755 (executable)
@@ -15,6 +15,9 @@ if $bindir/psql $* -f - <<END-OF-DATA
 ALTER TABLE media ADD COLUMN labeltype integer;
 UPDATE media SET labeltype=0;
 ALTER TABLE media ALTER COLUMN labeltype SET NOT NULL;
+ALTER TABLE pool ADD COLUMN labeltype integer;
+UPDATE pool set labeltype=0;
+ALTER TABLE pool ALTER COLUMN labeltype SET NOT NULL;
 
 ALTER TABLE media ADD COLUMN volparts integer;
 UPDATE media SET volparts=0;
index f4ad061c71ad10dbc49d11e74f8f6e5125ef4720..f5cf32813f233830c04fa3ea26bd556da21c93ac 100755 (executable)
@@ -112,6 +112,78 @@ INSERT INTO Media (
 
 DROP TABLE Media_backup;
 
+CREATE TEMPORARY TABLE Pool_backup (
+   PoolId INTEGER,
+   Name VARCHAR(128) NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 1,
+   AcceptAnyVolume TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat VARCHAR(128) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   UNIQUE (Name),
+   PRIMARY KEY (PoolId)
+   );
+
+INSERT INTO Pool_backup SELECT 
+   PoolId, Name, NumVols, MaxVols,
+   UseOnce, UseCatalog, AcceptAnyVolume,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, AutoPrune,
+   Recycle, PoolType, 0, LabelFormat,
+   Enabled, ScratchPoolId, RecyclePoolId
+   FROM Pool;
+
+DROP TABLE Pool;
+
+CREATE TABLE Pool (
+   PoolId INTEGER,
+   Name VARCHAR(128) NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 1,
+   AcceptAnyVolume TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat VARCHAR(128) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   UNIQUE (Name),
+   PRIMARY KEY (PoolId)
+   );
+
+INSERT INTO Pool (
+   PoolId, Name, NumVols, MaxVols,
+   UseOnce, UseCatalog, AcceptAnyVolume,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, AutoPrune,
+   Recycle, PoolType, LabelType, LabelFormat,
+   Enabled, ScratchPoolId, RecyclePoolId )
+   SELECT * FROM Pool_backup;
+
+DROP TABLE Pool_backup;
+
 COMMIT;
 
 END-OF-DATA
index f4ad061c71ad10dbc49d11e74f8f6e5125ef4720..f5cf32813f233830c04fa3ea26bd556da21c93ac 100755 (executable)
@@ -112,6 +112,78 @@ INSERT INTO Media (
 
 DROP TABLE Media_backup;
 
+CREATE TEMPORARY TABLE Pool_backup (
+   PoolId INTEGER,
+   Name VARCHAR(128) NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 1,
+   AcceptAnyVolume TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat VARCHAR(128) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   UNIQUE (Name),
+   PRIMARY KEY (PoolId)
+   );
+
+INSERT INTO Pool_backup SELECT 
+   PoolId, Name, NumVols, MaxVols,
+   UseOnce, UseCatalog, AcceptAnyVolume,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, AutoPrune,
+   Recycle, PoolType, 0, LabelFormat,
+   Enabled, ScratchPoolId, RecyclePoolId
+   FROM Pool;
+
+DROP TABLE Pool;
+
+CREATE TABLE Pool (
+   PoolId INTEGER,
+   Name VARCHAR(128) NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 1,
+   AcceptAnyVolume TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat VARCHAR(128) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   UNIQUE (Name),
+   PRIMARY KEY (PoolId)
+   );
+
+INSERT INTO Pool (
+   PoolId, Name, NumVols, MaxVols,
+   UseOnce, UseCatalog, AcceptAnyVolume,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, AutoPrune,
+   Recycle, PoolType, LabelType, LabelFormat,
+   Enabled, ScratchPoolId, RecyclePoolId )
+   SELECT * FROM Pool_backup;
+
+DROP TABLE Pool_backup;
+
 COMMIT;
 
 END-OF-DATA
index d388fc963bcd6f8e9ae6bc8e21607c5a3f0ae20e..51cae8486440c5b9064a038c76cf32459c2b186d 100644 (file)
@@ -759,8 +759,8 @@ next_run:
              edit_utime(res->res_pool.VolUseDuration, ed1, sizeof(ed1)),
              res->res_pool.Recycle,
              NPRT(res->res_pool.label_format));
-      sendit(sock, "      CleaningPrefix=%s\n",
-             NPRT(res->res_pool.cleaning_prefix));
+      sendit(sock, "      CleaningPrefix=%s LabelType=%d\n",
+             NPRT(res->res_pool.cleaning_prefix), res->res_pool.LabelType);
       sendit(sock, "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n",
              res->res_pool.recycle_oldest_volume,
              res->res_pool.purge_oldest_volume,
index 7e10a4b7194e608eaf882e650f7b3a0e4473c336..47fd0d1e979e452e226cc70556a646bda5bf739e 100644 (file)
@@ -619,7 +619,7 @@ bool write_session_label(DCR *dcr, int label)
    Dmsg1(90, "session_label record=%x\n", rec);
    switch (label) {
    case SOS_LABEL:
-      if (dev->state & ST_TAPE) {
+      if (dev->is_tape()) {
         dcr->StartBlock = dev->block_num;
         dcr->StartFile  = dev->file;
       } else {
@@ -628,7 +628,7 @@ bool write_session_label(DCR *dcr, int label)
       }
       break;
    case EOS_LABEL:
-      if (dev->state & ST_TAPE) {
+      if (dev->is_tape()) {
         dcr->EndBlock = dev->EndBlock;
         dcr->EndFile  = dev->EndFile;
       } else {
@@ -971,13 +971,14 @@ bool write_ansi_ibm_label(DCR *dcr, const char *VolName)
    int len;
    int stat;
 
+   Dmsg1(100, "LabelType=%d\n", dcr->VolCatInfo.LabelType); 
    switch (dcr->VolCatInfo.LabelType) {
    case B_BACULA_LABEL:
       return true;
    case B_ANSI_LABEL:
    case B_IBM_LABEL:
       ser_declare;
-      Dmsg0(000, "Write ansi label.\n");
+      Dmsg0(100, "Write ansi label.\n");
       len = strlen(VolName);
       if (len > 6) {
         len = 6;                        /* max len ANSI label */
@@ -1060,8 +1061,8 @@ static int read_ansi_ibm_label(DCR *dcr)
     *  If tape read the following EOF mark, on disk do
     *  not read.
     */
-   Dmsg0(000, "Read ansi label.\n");
-   if (dev->state & ST_TAPE) {
+   Dmsg0(100, "Read ansi label.\n");
+   if (dev->is_tape()) {
       num_rec = 4;
    } else {
       num_rec = 3;
@@ -1081,12 +1082,11 @@ static int read_ansi_ibm_label(DCR *dcr)
          Mmsg2(dev->errmsg, _("Read error on device %s in ANSI/IBM label. ERR=%s\n"),
            dev->dev_name, be.strerror());
          Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
-        if (dev->state & ST_EOF) {  /* EOF just seen? */
+        if (dev->at_eof()) {        /* EOF just seen? */
            dev->state |= ST_EOT;    /* yes, error => EOT */
         }
         return VOL_IO_ERROR;
       }
-      Dmsg1(000, "ANSI label=%80s\n", label);
    }
    return VOL_OK;
 }  
@@ -1100,6 +1100,6 @@ static char *ansi_date(time_t td, char *buf)
       td = time(NULL);
    }
    tm = gmtime(&td);
-   bsnprintf(buf, 6, "%d", 1000 * (tm->tm_year + 1900 - 2000) + tm->tm_yday);
+   bsnprintf(buf, 10, "%d  ", 1000 * (tm->tm_year + 1900 - 2000) + tm->tm_yday);
    return buf;
 }