]> cvs.zerfleddert.de Git - upsgraph/blobdiff - upsgraph.pl
Trigger data migration if limits of a data source are changed in config file
[upsgraph] / upsgraph.pl
index 4f660902158c975715a696fec3bf325ead762615..795ee95d9d87062e9593124aab8d4d26ed84e035 100755 (executable)
@@ -35,7 +35,7 @@ my $hosts = $UPSGRAPH::hosts;
 
 sub rrd_update(@) {
        my @args = @_;
-
+       print "Updating: ". Dumper(\@_);
        if ($use_rrds == 1) {
                RRDs::update(@args);
                $rrd_result = RRDs::error;
@@ -47,7 +47,7 @@ sub rrd_update(@) {
 sub rrd_graph(@) {
        my @args = @_;
        my @rrd_out = ();
-
+       print "Graphing: " . Dumper(\@_);
        if ($use_rrds == 1) {
                @rrd_out = RRDs::graph(@args);
                $rrd_result = RRDs::error;
@@ -93,6 +93,7 @@ sub rrdcreate(@) {
        RRDs::create(@cmd);
        if (RRDs::error) {
                print "Error while creating: " . RRDs::error . "\n";
+               print Dumper(\@cmd);
                exit 1;
        }
 }
@@ -324,12 +325,15 @@ foreach my $host (@$hosts) {
                        exit 1;
                }
 
+               my $limitsChanged = 0;
                if (defined($rrdinfo->{"ds[${field}].min"})) {
                        if ($rrdinfo->{"ds[${field}].min"} ne $host->{'vars'}->{$field}->{'min'}) {
+                               $limitsChanged = 1;
                                RRDs::tune("${rrdfile}.${field}","-i",$field.":".$host->{'vars'}->{$field}->{'min'});
                        }
                } else {
                        if ($host->{'vars'}->{$field}->{'min'} ne 'U') {
+                               $limitsChanged = 1;
                                RRDs::tune("${rrdfile}.${field}","-i",$field.":".$host->{'vars'}->{$field}->{'min'});
                        }
                }
@@ -341,10 +345,12 @@ foreach my $host (@$hosts) {
 
                if (defined($rrdinfo->{"ds[${field}].max"})) {
                        if ($rrdinfo->{"ds[${field}].max"} ne $host->{'vars'}->{$field}->{'max'}) {
+                               $limitsChanged = 1;
                                RRDs::tune("${rrdfile}.${field}","-a",$field.":".$host->{'vars'}->{$field}->{'max'});
                        }
                } else {
                        if ($host->{'vars'}->{$field}->{'max'} ne 'U') {
+                               $limitsChanged = 1;
                                RRDs::tune("${rrdfile}.${field}","-a",$field.":".$host->{'vars'}->{$field}->{'max'});
                        }
                }
@@ -355,7 +361,8 @@ foreach my $host (@$hosts) {
                }
                    
                if ($rrdinfo->{'rra[0].rows'} != $keep ||
-                       !defined($rrdinfo->{'rra[1].rows'}) || $rrdinfo->{'rra[1].rows'} != $keepHours) {
+                       !defined($rrdinfo->{'rra[1].rows'}) || $rrdinfo->{'rra[1].rows'} != $keepHours ||
+                       $limitsChanged == 1) {
 
                        print "Resizing ${rrdfile}.${field} from " . $rrdinfo->{'rra[0].rows'} .
                                " to ${keep} samples.\n";
@@ -415,11 +422,11 @@ foreach my $host (@$hosts) {
        }
 }
 
-my $child = fork();
-
-die "fork failed!" if (!defined($child));
-
-exit 0 if ($child != 0);
+#my $child = fork();
+#
+#die "fork failed!" if (!defined($child));
+#
+#exit 0 if ($child != 0);
 
 while(1) {
        open(HTML, ">${outdir}/index.html.new");
Impressum, Datenschutz