>> I could be missing this feature all together, but I would like to be
>> able to generate a report of my stuff. For example, right now I
>> would like to get a report of all the servers and save that somewhere
>> for another user. Would it be possible to exports reports and/or
>> data?
Hey Jason,
> The last (0.16.2) release provides an easy way to add own extensions.
> Basically, you have to keep your code in local.php file and then just
> keep it the "inc" directory of the extracted tree. Even more,
> I've seen an early version of "show my servers" addon by Aaron. He may
> find it appropriate publishing it, so I can save on explaining how it
> works.
<?php // Credits: // Report back-end created by Denis Ovsienko <http://www.racktables.org/> // Query created, interface adjusted by Aaron Dummer <aaron@xxxxxxxxxxx> $localreports[] = array ( 'title' => 'My Servers', 'type' => 'custom', 'func' => 'getMyServers' ); function getMyServers () { // Returns details of all objects whose type is 4 (Server). // Since an object may exist in multiple racks, the Rack & Row details are those of the first one only. // TODO: Make report sortable by column, make it prettier with CSS. $query = 'SELECT RackObject.id AS object_id, RackObject.name, RackObject.asset_no, RackObject.barcode, RackObject.has_problems, (SELECT d.dict_value FROM AttributeValue a LEFT JOIN Dictionary d ON a.uint_value = d.dict_key WHERE a.object_id = RackObject.id AND a.attr_id = 2) AS hw_type, (SELECT d.dict_value FROM AttributeValue a LEFT JOIN Dictionary d ON a.uint_value = d.dict_key WHERE a.object_id = RackObject.id AND a.attr_id = 4) AS sw_type, (SELECT row_id FROM Rack WHERE id = (SELECT DISTINCT(rack_id) FROM RackSpace WHERE object_id = RackObject.id ORDER BY rack_id LIMIT 1)) AS row_id, (SELECT d.dict_value FROM Dictionary d WHERE d.chapter_no = 3 AND d.dict_key = (SELECT row_id FROM Rack WHERE id = (SELECT DISTINCT(rack_id) FROM RackSpace WHERE object_id = RackObject.id ORDER BY rack_id LIMIT 1))) AS row_name, (SELECT DISTINCT(rack_id) FROM RackSpace WHERE object_id = RackObject.id ORDER BY rack_id LIMIT 1) AS rack_id, (SELECT name FROM Rack WHERE id = (SELECT DISTINCT(rack_id) FROM RackSpace WHERE object_id = RackObject.id ORDER BY rack_id LIMIT 1)) AS rack_name FROM RackObject WHERE objtype_id = 4 ORDER BY name'; $result = useSelectBlade ($query, __FUNCTION__); echo "<style type='text/css'>\n"; echo "tr.has_problems {\n"; echo "background-color: #ffa0a0;\n"; echo "}\n"; echo "</style>\n"; echo "<table border=1><tr valign=top>"; echo "<th align=left>Name</th>"; echo "<th align=left>Asset Tag</th>"; echo "<th align=left>Barcode</th>"; echo "<th align=left>Problems?</th>"; echo "<th align=left>Hardware</th>"; echo "<th align=left>Software</th>"; echo "<th align=left>Row</th>"; echo "<th align=left>Rack</th></tr>"; while ($row = $result->fetch (PDO::FETCH_ASSOC)) { // make the row red if server has problems if ($row['has_problems'] == 'yes') echo "<tr class=has_problems>"; else echo "<tr>"; printf("<td><a href='?page=object&object_id=%s'>%s</a></td>", $row['object_id'], $row['name']); printf("<td>%s</td>", $row['asset_no']); printf("<td>%s</td>", $row['barcode']); printf("<td>%s</td>", $row['has_problems']); printf("<td>%s</td>", parseWikiLink ($row['hw_type'], 'a', TRUE)); printf("<td>%s</td>", parseWikiLink ($row['sw_type'], 'a', TRUE)); printf("<td><a href='?page=row&row_id=%s'>%s</a></td>", $row['row_id'], $row['row_name']); printf("<td><a href='?page=rack&rack_id=%s'>%s</a></td>", $row['rack_id'], $row['rack_name']); echo "</tr>\n"; } echo "</table>\n"; } ?>