]> git.sur5r.net Git - bacula/bacula/commitdiff
Update ".status client running" output for new Bat screen
authorEric Bollengier <eric@eb.homelinux.org>
Mon, 20 Dec 2010 20:55:40 +0000 (21:55 +0100)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:39:47 +0000 (14:39 +0200)
bacula/src/filed/status.c

index aa515c9552c51c2393cd000f94ebb42f6db07089..a8c5658cb9593ed0c7801d892df331b7c6a32cd3 100644 (file)
@@ -158,7 +158,7 @@ static void  list_status_header(STATUS_PKT *sp)
    }
 }
 
-static void  list_running_jobs(STATUS_PKT *sp)
+static void  list_running_jobs_plain(STATUS_PKT *sp)
 {
    int sec, bps;
    POOL_MEM msg(PM_MESSAGE);
@@ -171,10 +171,8 @@ static void  list_running_jobs(STATUS_PKT *sp)
     * List running jobs
     */
    Dmsg0(1000, "Begin status jcr loop.\n");
-   if (!sp->api) {
-      len = Mmsg(msg, _("\nRunning Jobs:\n"));
-      sendit(msg.c_str(), len, sp);
-   }
+   len = Mmsg(msg, _("\nRunning Jobs:\n"));
+   sendit(msg.c_str(), len, sp);
    const char *vss = "";
 #ifdef WIN32_VSS
    if (g_pVSSClient && g_pVSSClient->IsInitialized()) {
@@ -230,15 +228,90 @@ static void  list_running_jobs(STATUS_PKT *sp)
    }
    endeach_jcr(njcr);
 
-   if (!sp->api) {
-      if (!found) {
-         len = Mmsg(msg, _("No Jobs running.\n"));
+   if (!found) {
+      len = Mmsg(msg, _("No Jobs running.\n"));
+      sendit(msg.c_str(), len, sp);
+   }
+   sendit(_("====\n"), 5, sp);
+}
+
+static void  list_running_jobs_api(STATUS_PKT *sp)
+{
+   int sec, bps;
+   POOL_MEM msg(PM_MESSAGE);
+   char b1[32], b2[32], b3[32];
+   int len;
+   bool found = false;
+   JCR *njcr;
+   char dt[MAX_TIME_LENGTH];
+   /*
+    * List running jobs for Bat/Bweb (simple to parse)
+    */
+   int vss = 0;
+#ifdef WIN32_VSS
+   if (g_pVSSClient && g_pVSSClient->IsInitialized()) {
+      vss = 1;
+   }
+#endif
+   foreach_jcr(njcr) {
+      bstrutime(dt, sizeof(dt), njcr->start_time);
+      if (njcr->JobId == 0) {
+         len = Mmsg(msg, "DirectorConnected=%s\n", dt);
+      } else {
+         len = Mmsg(msg, "JobId=%d\n Job=%s\n",
+                    njcr->JobId, njcr->Job);
+         sendit(msg.c_str(), len, sp);
+         len = Mmsg(msg," VSS=%d\n Level=%c\n JobType=%c\n JobStarted=%s\n",
+                    vss, njcr->getJobLevel(), 
+                    njcr->getJobType(), dt);
+      }
+      sendit(msg.c_str(), len, sp);
+      if (njcr->JobId == 0) {
+         continue;
+      }
+      sec = time(NULL) - njcr->start_time;
+      if (sec <= 0) {
+         sec = 1;
+      }
+      bps = (int)(njcr->JobBytes / sec);
+      len = Mmsg(msg, " Files=%s\n Bytes=%s\n Bytes/sec=%s\n Errors=%d\n"
+                 " Bwlimit=%d\n",
+                 edit_uint64(njcr->JobFiles, b1),
+                 edit_uint64(njcr->JobBytes, b2),
+                 edit_uint64(bps, b3),
+                 njcr->JobErrors, njcr->max_bandwidth);
+      sendit(msg.c_str(), len, sp);
+      len = Mmsg(msg, " FilesExamined=%s\n",
+           edit_uint64(njcr->num_files_examined, b1));
+      sendit(msg.c_str(), len, sp);
+      if (njcr->JobFiles > 0) {
+         njcr->lock();
+         len = Mmsg(msg, " ProcessingFile=%s\n", njcr->last_fname);
+         njcr->unlock();
+         sendit(msg.c_str(), len, sp);
+      }
+
+      found = true;
+      if (njcr->store_bsock) {
+         len = Mmsg(msg, " SDReadSeqNo=%" lld "\n fd=%d\n",
+             njcr->store_bsock->read_seqno, njcr->store_bsock->m_fd);
+         sendit(msg.c_str(), len, sp);
+      } else {
+         len = Mmsg(msg, _(" SDSocket=closed\n"));
          sendit(msg.c_str(), len, sp);
       }
-      sendit(_("====\n"), 5, sp);
    }
+   endeach_jcr(njcr);
 }
-  
+
+static void  list_running_jobs(STATUS_PKT *sp)
+{
+   if (sp->api) {
+      list_running_jobs_api(sp);
+   } else {
+      list_running_jobs_plain(sp);
+   }
+}  
 
 static void list_terminated_jobs(STATUS_PKT *sp)
 {