]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/admin.c
Ensure that StorageId is updated after write
[bacula/bacula] / bacula / src / dird / admin.c
index a3c833303bb489e6727ef0885585a47aeca0bdca..b7773e4c6ecb62c62e0f369d82e3bf14b2f3f483 100644 (file)
@@ -1,41 +1,40 @@
-/*
- *
- *   Bacula Director -- admin.c -- responsible for doing admin jobs
- *
- *     Kern Sibbald, May MMIII
- *
- *  Basic tasks done here:
- *     Display the job report.
- *
- *   Version $Id$
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
-   modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation plus additions
-   that are listed in the file LICENSE.
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
+   You should have received a copy of the GNU Affero General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Bacula® is a registered trademark ofJohn Walker.
+   Bacula® is a registered trademark of Kern Sibbald.
    The licensor of Bacula is the Free Software Foundation Europe
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
 */
+/*
+ *
+ *   Bacula Director -- admin.c -- responsible for doing admin jobs
+ *
+ *     Kern Sibbald, May MMIII
+ *
+ *  Basic tasks done here:
+ *     Display the job report.
+ *
+ */
 
 #include "bacula.h"
 #include "dird.h"
@@ -45,6 +44,9 @@
 bool do_admin_init(JCR *jcr)
 {
    free_rstorage(jcr);
+   if (!allow_duplicate_job(jcr)) {
+      return false;
+   }
    return true;
 }
 
@@ -63,7 +65,7 @@ bool do_admin(JCR *jcr)
    Jmsg(jcr, M_INFO, 0, _("Start Admin JobId %d, Job=%s\n"),
         jcr->JobId, jcr->Job);
 
-   set_jcr_job_status(jcr, JS_Running);
+   jcr->setJobStatus(JS_Running);
    admin_cleanup(jcr, JS_Terminated);
    return true;
 }
@@ -74,22 +76,20 @@ bool do_admin(JCR *jcr)
  */
 void admin_cleanup(JCR *jcr, int TermCode)
 {
-   char sdt[50], edt[50];
+   char sdt[50], edt[50], schedt[50];
    char term_code[100];
    const char *term_msg;
    int msg_type;
    MEDIA_DBR mr;
 
    Dmsg0(100, "Enter backup_cleanup()\n");
-   memset(&mr, 0, sizeof(mr));
-   set_jcr_job_status(jcr, TermCode);
 
-   update_job_end_record(jcr);        /* update database */
+   update_job_end(jcr, TermCode);
 
    if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
-      Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"),
+      Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s"),
          db_strerror(jcr->db));
-      set_jcr_job_status(jcr, JS_ErrorTerminated);
+      jcr->setJobStatus(JS_ErrorTerminated);
    }
 
    msg_type = M_INFO;                 /* by default INFO message */
@@ -110,18 +110,22 @@ void admin_cleanup(JCR *jcr, int TermCode)
       sprintf(term_code, _("Inappropriate term code: %c\n"), jcr->JobStatus);
       break;
    }
-   bstrftime(sdt, sizeof(sdt), jcr->jr.StartTime);
-   bstrftime(edt, sizeof(edt), jcr->jr.EndTime);
+   bstrftimes(schedt, sizeof(schedt), jcr->jr.SchedTime);
+   bstrftimes(sdt, sizeof(sdt), jcr->jr.StartTime);
+   bstrftimes(edt, sizeof(edt), jcr->jr.EndTime);
+
 
    Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
+"  Scheduled time:         %s\n"
 "  Start time:             %s\n"
 "  End time:               %s\n"
 "  Termination:            %s\n\n"),
         edt,
         jcr->jr.JobId,
         jcr->jr.Job,
+        schedt,
         sdt,
         edt,
         term_msg);