Index: trunk/tools/roboczar.pl
===================================================================
--- trunk/tools/roboczar.pl	(revision 28870)
+++ trunk/tools/roboczar.pl	(revision 28926)
@@ -42,5 +42,5 @@
 
     print "* Updating labels\n";
-    my @servers = ("stdscience", "distribution", "publishing");
+    my @servers = ("stdscience", "distribution", "publishing", "update");
 
     my $server = undef;
@@ -92,91 +92,61 @@
     my $faults;
     my $stage;
-    my ($totalNew,$totalFull,$totalFaults);
     my $query = undef;
     my $str = undef;
-    my $reverting = 0;
-    my $server = undef;
-    my $rows = undef;
+    my $labels = undef;
+    my $updateLabels = undef;
     my $row = undef;
     my $begin = undef;
     my $end = undef;
     my $priority = undef;
+    my $newState = undef;
+
     while (1) {
 
+        # sort out times
+        $begin =  strftime('%Y-%m-%d 07:00',localtime);
+        $end = $czarDb->getNowTimestamp();
+
+        if ($czarDb->isBefore($end, $begin)) {
+
+            $begin = $czarDb->subtractInterval($begin, "1 DAY");
+        }
+
+        # check nebulous
         print "* Checking Nebulous\n";
         $nebulous->updateClusterSpaceInfo();
         $czarplot->plotDiskUsageHistogram();
         updateServerStatus();
+
+        # check labels
         updateLabels();
-        if (!$czarDb->getCurrentLabels("stdscience", \$rows)) {next;}
-
-        my $size = @{$rows};
-        if($size < 1) {
-            
-            print "* WARNING: no stdscience labels found in Db\n";
-            next;
-        }
-
-        # get priority
-        foreach $row ( @{$rows} ) {
-            my ($label) = @{$row};
-            $priority = $gpc1Db->getPriority($label);
-            $czarDb->setLabelPriority($label, $priority);
-        }
-
-        # sort out times
-        $begin =  strftime('%Y-%m-%d 07:00',localtime);
-        $end = $czarDb->getNowTimestamp();
-
-        if ($czarDb->isBefore($end, $begin)) {
-
-            $begin = $czarDb->subtractInterval($begin, "1 DAY");
-        }
-
-        foreach $stage (@stages) {
-
-            $server = $pantasks->getServerForThisStage($stage);
-            $pantasks->getRevertStatus($stage, \$reverting);
-            $czarDb->updateRevertStatus($stage, $reverting);
-
-            print "* Checking labels for $stage stage\n";
-
-            $totalNew=$totalFaults=$totalFull=0;
-            foreach $row ( @{$rows} ) {
-                my ($label) = @{$row};
-
-                chomp($label);
-
-                $new = $gpc1Db->countExposures($label, $stage, "new");
-                $full = $gpc1Db->countExposures($label, $stage, "full");
-                $faults = $gpc1Db->countFaults($label, $stage);
-
-                #printf("%ld, %s, %s, %d, %d\n", $currentTime, $label, $stage, $new, $faults);
-                $totalNew += $new;
-                $totalFull += $full;
-                $totalFaults += $faults;
-
-                $czarDb->insertNewTimeData($stage, $label, $new, $full, $faults);
-                $czarplot->createTimeSeries($label,  $stage, $begin, $end);
+
+        # servers to check
+        my @serversToCheck = ("stdscience", "update");
+
+        my $thisServer = undef;
+        foreach $thisServer (@serversToCheck) {
+
+            if ($thisServer eq "update") {$newState = "update";}
+            else {$newState = "new";}
+
+            # deal with stdscience labels
+            if (!$czarDb->getCurrentLabels($thisServer, \$labels)) {next;}
+            my $size = @{$labels};
+            if($size > 0) {
+
+                # get priority
+                foreach $row ( @{$labels} ) {
+                    my ($label) = @{$row};
+                    $priority = $gpc1Db->getPriority($label);
+                    $czarDb->setLabelPriority($label, $priority);
+                }
+
+                updateAllStages($thisServer, $newState, $labels, $begin, $end);
+                createPlots($thisServer, $labels, $begin, $end);
             }
-
-            $czarDb->insertNewTimeData($stage, "all_labels", $totalNew, $totalFull, $totalFaults);
-        }
-
-        print "* Generating plots\n";
-        foreach $row ( @{$rows} ) {
-            my ($label) = @{$row};
-
-            $czarplot->createTimeSeries($label, undef, $begin, $end);
-            $czarplot->createHistogram($label, $begin, $end);
-
-            #routineChecks($label, "1 HOUR");
-        }
-        $czarplot->createTimeSeries("all_labels", undef, $begin, $end);
-        $czarplot->createHistogram("all_labels", $begin, $end);
-        foreach $stage (@stages) {
-
-            $czarplot->createTimeSeries("all_labels",  $stage, $begin, $end); # TODO must be a neater way...
-        }
+            else { print "* WARNING: no $thisServer labels found in Db\n";}
+        }
+
         print "--------------------------------------------------------------------------\n";
         print "* Going to sleep\n";
@@ -186,4 +156,95 @@
         #sendEmail("roydhenderson\@gmail.com", "roboczar\@ipp.com", "Roboczar update", "Some content");
     };
+}
+
+###########################################################################
+#
+# Loops through labels and creates time series and histogram plots
+#
+###########################################################################
+sub createPlots {
+    my ($server, $rows, $begin, $end) = @_;
+
+    my $stage = undef;
+    my $row = undef;
+
+    print "* Generating plots\n";
+
+    # create plots for each label for each stage
+    foreach $stage (@stages) {
+        foreach $row ( @{$rows} ) {
+            my ($label) = @{$row};
+
+            chomp($label);
+            $czarplot->createTimeSeries($label,  $stage, $begin, $end);
+        }
+    }
+
+    # create plots for each label for all stages
+    foreach $row ( @{$rows} ) {
+        my ($label) = @{$row};
+
+        $czarplot->createTimeSeries($label, undef, $begin, $end);
+        $czarplot->createHistogram($label, $begin, $end);
+
+        #routineChecks($label, "1 HOUR");
+    }
+    $czarplot->createTimeSeries("all_".$server."_labels", undef, $begin, $end);
+    $czarplot->createHistogram("all_".$server."_labels", $begin, $end);
+    foreach $stage (@stages) {
+
+        $czarplot->createTimeSeries("all_".$server."_labels",  $stage, $begin, $end); # TODO must be a neater way...
+    }
+}
+
+###########################################################################
+#
+# Loops through some labels and updates processed/pending/faults in the Db
+#
+###########################################################################
+sub updateAllStages {
+    my ($labelServer, $newState, $rows, $begin, $end) = @_;
+
+    print "* Updating stage data\n";
+    my $totalNew = undef;
+    my $totalFaults = undef;
+    my $totalFull = undef;
+    my $stage = undef;
+    my $reverting = 0;
+    my $row = undef;
+    my $new = undef;
+    my $full = undef;
+    my $faults = undef;
+    my $server = undef;
+    my $state = undef;
+    
+    foreach $stage (@stages) {
+
+        $server = $pantasks->getServerForThisStage($stage);
+        $pantasks->getRevertStatus($stage, \$reverting);
+        $czarDb->updateRevertStatus($stage, $reverting);
+
+        print "* Checking labels for $stage stage\n";
+
+        $totalNew=$totalFaults=$totalFull=0;
+        foreach $row ( @{$rows} ) {
+            my ($label) = @{$row};
+
+            chomp($label);
+
+            $new = $gpc1Db->countExposures($label, $stage, $newState);
+            $full = $gpc1Db->countExposures($label, $stage, "full");
+            $faults = $gpc1Db->countFaults($label, $stage, $newState);
+
+            #printf("%s  %s, %s, %d, %d\n", $labelServer, $label, $stage, $new, $faults);
+            $totalNew += $new;
+            $totalFull += $full;
+            $totalFaults += $faults;
+
+            $czarDb->insertNewTimeData($stage, $label, $new, $full, $faults);
+        }
+
+        $czarDb->insertNewTimeData($stage, "all_".$labelServer."_labels", $totalNew, $totalFull, $totalFaults);
+    }
 }
 
