I think i have found my own problem... but not a solution (other then starting all over with a new perl script)...<br><br>It would seem, and correct me if i'm wrong, that the rrdtool restore requires the XML elements to be ordered. When the XML::Simple reads in and exports to XML the order of the original XML is lost and exported in alphebetical order. Maybe this could be considered a bug maybe it's by design of the rrd tool. either way i'm not sure if there are any explicit specification in XML 1.0 on element ordering. <br>
<br>I dont believe XML::Simple perl module can maintain the origional order of the XML it reads in... so i'll have to find another module or another way to rebuilding the XML file if i wasn to get around this. But just to add my opinion, i think it would make the tool more versitail if it was not dependend on the order of the XML. <br>
<br><br><br><div class="gmail_quote">On Mon, Mar 10, 2008 at 2:16 PM, 0xception <<a href="mailto:0xception@gmail.com">0xception@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello, I'm currently working with several hundred RRD files and a large
chunk have the incorrect step and heartbeat .they were setup with a step of 300 and
heartbeat of 900 where i would like to change them to 600 and 1800.
I've read that in order to accomplish this you need to dump the
database into XML with the rrdtool dump command and then alter the XML
files (adding/removing data points, and updating the settings) and then
restore the database from the modified XML, please correct me if i'm
wrong about that. <br>
<br>Anyway I've created a Perl script to dump to XML, read in the XML
and change the values of heartbeat and step and then remove every other
data collection point to be inline with the step of 600 sec. I then
rebuild the XML and save that to a file. The new XML file does not have
any comments but contains everything else. When i try and restore the
database from this XML file i get the error<br>
<br><i> 'ERROR: Incompatible file version, detected version . This is not supported by the version 0003 restore tool.</i>'<br><br>returned.
I've looked through the modified XML file and i don't see anything
different, other then the order the tags are listed in the file. could
this cause a problem? or could the lack of comments cause a problem?
I'm also using the same version of rrdtool to dump as i am to restore
the database, RRDtool 1.2.23. <br>
<br>Original XML:<br><a href="https://www.ondashboard.com/origional.xml" target="_blank">https://www.ondashboard.com/origional.xml</a><br><br>Modified XML:<br><a href="https://www.ondashboard.com/modified.xml" target="_blank">https://www.ondashboard.com/modified.xml</a><br>
<br>Part of the Perl Script:<br><br><div style="margin-left: 40px;"> # read XML file<br> my $data = $xml->XMLin("dump.xml");<br><br> $data->{step} = 600;<br> <br> my @xml;<br> <br> for my $rra ( @{ $data->{rra} } ) { <br>
my $lcv=0;<br> my @new;<br><br> # Loop through database and remove every other entry.<br> for my $value ( @{ $rra->{database}->{row} } ) { <br> if($lcv % 2 == 0 || $lcv == 0) {<br>
push(@new, \%$value); <br> }<br> $lcv++;<br> } <br><br> # Append XML with new Database<br> $rra->{database}->{row} = \@new; <br> push(@xml, $rra);<br>
}<br> <br> $data->{rra} = \@xml;<br><br> # Export the perl structure into XML<br> XMLout($data, OutputFile => $file.".xml",<br> RootName => 'rrd',<br> NoAttr => 1);<br>
</div><br><br><br><br>Thanks.<br>
</blockquote></div><br>