View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
1827 | RackTables | default | public | 2018-06-21 17:37 | 2019-02-24 09:39 |
Reporter | twielgos | Assigned To | |||
Priority | none | Severity | minor | Reproducibility | have not tried |
Status | new | Resolution | open | ||
Summary | 1827: Feature request: Label generation from cable maps | ||||
Description | A feature I would like to see would be to output a CSV from cable maps so that they can be imported into popular label printer software from Panduit, Brother, Dymo, whoever. An example would be a 4 column CSV with source hostname, local port, remote port, destination hostname Doing this would allow me to rack and map cables in Racktables prior to physical installation of hardware. It would expand Racktables use as an architectural tool - not simply a documentation tool. | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
I have created a plugin that could respond to your needs. Since I am working with version 0.21.1 which has a different plugin management, I have back-ported my plugin to be compatible with version 0.20.14, the current stable release (at the moment I no longer have a 0.20.14 environment for a complete test ... hope it works!) Once installed (i.e. put the attached file in the 'plugins' directory of your installation, and set attributes and ownership as required), you should find a 'Cable labels' tab when displaying object information. Feel free to use or modify it as needed. cableMapLabelGeneration.php (1,871 bytes)
<?php global $tab, $ajaxhandler; $tab['object']['csvmap'] = 'Cable labels'; registerTabHandler('object', 'csvmap', 'renderCSVmap'); $ajaxhandler['cablemap-report'] = 'cableMapAJAX'; function renderCSVmap ($object_id) { // see renderPortsForObject() in interface.php $object = spotEntity ('object', $object_id); amplifyCell ($object); startPortlet('Cabling'); echo "<table class='widetable zebra' border=0 cellspacing=0 cellpadding=5 align='center'><tr><th>Source hostname</th><th>Local port</th><th>Remote port</th><th>Remote hostname</th></tr>"; $lines = 0; foreach ($object['ports'] as $port) if ($port['remote_object_id']) { echo "<tr><td>${object['name']}</td><td>${port['name']}</td><td>${port['remote_name']}</td><td>${port['remote_object_name']}</td></tr>"; $lines++; } echo "</table>"; echo "<p>"; if ($lines > 0) { echo "<form method=\"POST\" action=\"index.php?module=ajax&ac=cablemap-report&objid=${object_id}\" accept-charset=\"UTF-8\">"; echo "<input type=\"submit\" name=\"csvmap\" value=\" Export CSV \" />"; echo "</form><p>"; } else echo "No data available"; finishPortlet(); } function cableMapAJAX() { $objid = 0; if (isset($_REQUEST['objid'])) $objid = $_REQUEST['objid']; $object = spotEntity ('object', $objid); amplifyCell ($object); ob_start(); echo 'Source hostname,Local port,Remote port,Remote hostname'."\n"; foreach ($object['ports'] as $port) if ($port['remote_object_id']) echo $object['name'].','.$port['name'].','.$port['remote_name'].','.$port['remote_object_name']."\n"; $csv = ob_get_clean(); // write file (and size) to the browser header('Content-Type: text/csv; charset=utf-8'); header(sprintf("Content-Disposition: attachment;filename=\"cablelabels-${object['name']}.csv\"")); header('Cache-Control: max-age=0'); header('Content-Length: '.strlen($csv)); echo $csv; } |
|
If you would like to commit this to the racktables-contribs repository, tell your GitHub username and you will have access. | |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-06-21 17:37 | twielgos | New Issue | |
2018-09-06 15:50 | albertoa | File Added: cableMapLabelGeneration.php | |
2018-09-06 15:50 | albertoa | Note Added: 0003811 | |
2018-09-07 11:23 | infrastation | Note Added: 0003813 |