function FullRowView() { if (isset($_REQUEST['row_id'])) { $row_id = $_REQUEST['row_id']; } else { $rack_id = 1; } global $frvVersion; $rowData = getRowInfo($row_id); $cellfilter = getCellFilter(); $rackList = filterCellList(listCells('rack', $row_id), $cellfilter['expression']); // echo "<form method=post name=ImportObject action='?module=redirect&page=row&row_id=$row_id&tab=full_row_view&op=preparePrint'>"; echo "<font size=1em color=gray>version {$frvVersion} </font>"; // echo "<input type=submit name=got_very_fast_data value='Print view'>"; // echo "</form>"; echo '<table><tr><td nowrap="nowrap" valign="top">'; $count = 1; foreach ($rackList as $rack) { // echo "<br>Schrank: ${rack['name']} ${rack['id']}"; // $rackData = spotEntity ('rack', ${rack['id']}); echo '<div class="phgrack" style="float: top; width: 240px">'; renderReducedRack("{$rack['id']}"); echo '</div>'; echo '</td><td nowrap="nowrap" valign="top">'; } echo '</td></tr></table>'; }
function initRackTablesRack($remain_hostgroups) { // get the data of zabbix hostgroup $params = array('output' => 'extend', 'sortfield' => array('name')); $result = doPost('hostgroup.get', $params); $hostgroups = isset($result['result']) ? $result['result'] : array(); global $row_id; global $rack_height; $rowInfo = getRowInfo($row_id); $sort_order = $rowInfo['count']; foreach ($hostgroups as $hostgroup) { if (in_array($hostgroup['name'], $remain_hostgroups)) { continue; } $taglist = genericAssertion('taglist', 'array0'); $sort_order += 1; $rack_id = commitAddObject($hostgroup['name'], NULL, 1560, "", $taglist); // set height $params = array('output' => array('hostids'), 'groupids' => array($hostgroup['groupid'])); $result = doPost('host.get', $params); $height = isset($result['result']) ? count($result['result']) : 0; if ($height < $rack_height) { $height = $rack_height; } commitUpdateAttrValue($rack_id, 27, $height); commitUpdateAttrValue($rack_id, 29, $sort_order); // Link it to the row commitLinkEntities('row', $row_id, 'rack', $rack_id); } $rackDatas = array(); $allRacks = scanRealmByText('rack'); foreach ($allRacks as $rack_id => $rack) { $rackDatas[$rack['name']] = $allRacks[$rack_id]; } return $rackDatas; }
function addRack() { $taglist = genericAssertion('taglist', 'array0'); // The new rack(s) should be placed on the bottom of the list, sort-wise $rowInfo = getRowInfo($_REQUEST['row_id']); $sort_order = $rowInfo['count'] + 1; if (isset($_REQUEST['got_data'])) { assertStringArg('name'); assertUIntArg('height1'); assertStringArg('asset_no', TRUE); $rack_id = commitAddObject($_REQUEST['name'], NULL, 1560, $_REQUEST['asset_no'], $taglist); // Set the height and sort order commitUpdateAttrValue($rack_id, 27, $_REQUEST['height1']); commitUpdateAttrValue($rack_id, 29, $sort_order); // Link it to the row commitLinkEntities('row', $_REQUEST['row_id'], 'rack', $rack_id); showSuccess('added rack ' . mkA($_REQUEST['name'], 'rack', $rack_id)); } elseif (isset($_REQUEST['got_mdata'])) { assertUIntArg('height2'); assertStringArg('names', TRUE); // copy-and-paste from renderAddMultipleObjectsForm() $names1 = explode("\n", $_REQUEST['names']); $names2 = array(); foreach ($names1 as $line) { $parts = explode('\\r', $line); reset($parts); if (!strlen($parts[0])) { continue; } else { $names2[] = rtrim($parts[0]); } } foreach ($names2 as $cname) { $rack_id = commitAddObject($cname, NULL, 1560, NULL, $taglist); // Set the height and sort order commitUpdateAttrValue($rack_id, 27, $_REQUEST['height2']); commitUpdateAttrValue($rack_id, 29, $sort_order); $sort_order++; // Link it to the row commitLinkEntities('row', $_REQUEST['row_id'], 'rack', $rack_id); showSuccess('added rack ' . mkA($cname, 'rack', $rack_id)); } } else { showFuncMessage(__FUNCTION__, 'ERR2'); } }
function addRack() { $taglist = genericAssertion('taglist', 'array0'); // The new rack(s) should be placed on the bottom of the list, sort-wise $rowInfo = getRowInfo($_REQUEST['row_id']); $sort_order = $rowInfo['count'] + 1; if (isset($_REQUEST['got_data'])) { ############################################################################################### # Add zabbix group $result = addGroup($_REQUEST["name"]); if (isset($result["error"])) { showError("Adding zabbix group is failed. Error message:" . $result["error"]); return; } # END ############################################################################################### assertStringArg('name'); assertUIntArg('height1'); assertStringArg('asset_no', TRUE); $rack_id = commitAddObject($_REQUEST['name'], NULL, 1560, $_REQUEST['asset_no'], $taglist); // Set the height and sort order commitUpdateAttrValue($rack_id, 27, $_REQUEST['height1']); commitUpdateAttrValue($rack_id, 29, $sort_order); // Link it to the row commitLinkEntities('row', $_REQUEST['row_id'], 'rack', $rack_id); showSuccess('added rack ' . mkA($_REQUEST['name'], 'rack', $rack_id)); ################################################################################################ # insert information of airconditioner $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : 'rack'; if ($type == 'airconditioner') { usePreparedInsertBlade('rack_airconditioner', array('row_id' => $_REQUEST['row_id'], 'rack_id' => $rack_id)); } # insert position information $pos_x = isset($_REQUEST['pos_x']) ? $_REQUEST['pos_x'] : null; $pos_y = isset($_REQUEST['pos_y']) ? $_REQUEST['pos_y'] : null; $pos_z = isset($_REQUEST['pos_z']) ? $_REQUEST['pos_z'] : null; # if x,y,z are existing, insert into DB if (isset($pos_x) && isset($pos_y) && isset($pos_z)) { usePreparedInsertBlade('rack_position', array('row_id' => $_REQUEST['row_id'], 'rack_id' => $rack_id, 'pos_x' => $pos_x, 'pos_y' => $pos_y, 'pos_z' => $pos_z)); } ################################################################################################ } elseif (isset($_REQUEST['got_mdata'])) { assertUIntArg('height2'); assertStringArg('names', TRUE); // copy-and-paste from renderAddMultipleObjectsForm() $names1 = explode("\n", $_REQUEST['names']); $names2 = array(); foreach ($names1 as $line) { $parts = explode('\\r', $line); reset($parts); if (!strlen($parts[0])) { continue; } else { $names2[] = rtrim($parts[0]); } } foreach ($names2 as $cname) { ################################################################################################ # add zabbix group $result = addGroup($cname); if (isset($result["error"])) { showError("Adding zabbix group is failed. Error message:" . $result["error"]); return; } # END ################################################################################################ $rack_id = commitAddObject($cname, NULL, 1560, NULL, $taglist); // Set the height and sort order commitUpdateAttrValue($rack_id, 27, $_REQUEST['height2']); commitUpdateAttrValue($rack_id, 29, $sort_order); $sort_order++; // Link it to the row commitLinkEntities('row', $_REQUEST['row_id'], 'rack', $rack_id); showSuccess('added rack ' . mkA($cname, 'rack', $rack_id)); } } else { showFuncMessage(__FUNCTION__, 'ERR2'); } }
function commitUpdateRack($rack_id, $new_row_id, $new_name, $new_height, $new_has_problems, $new_asset_no, $new_comment) { // Can't shrink a rack if rows being deleted contain mounted objects $check_result = usePreparedSelectBlade('SELECT COUNT(*) AS count FROM RackSpace WHERE rack_id = ? AND unit_no > ?', array($rack_id, $new_height)); $check_row = $check_result->fetch(PDO::FETCH_ASSOC); unset($check_result); if ($check_row['count'] > 0) { throw new InvalidArgException('new_height', $new_height, 'Cannot shrink rack, objects are still mounted there'); } // Determine if the row changed $old_rack = spotEntity('rack', $rack_id); $old_row_id = $old_rack['row_id']; if ($old_row_id != $new_row_id) { // Move it to the specified row usePreparedUpdateBlade('EntityLink', array('parent_entity_id' => $new_row_id), array('child_entity_type' => 'rack', 'child_entity_id' => $rack_id)); // Set the sort_order attribute so it's placed at the end of the new row $rowInfo = getRowInfo($new_row_id); usePreparedUpdateBlade('AttributeValue', array('uint_value' => $rowInfo['count']), array('object_id' => $rack_id, 'attr_id' => 29)); // Reset the sort order of the old row resetRackSortOrder($old_row_id); } // Update the height commitUpdateAttrValue($rack_id, 27, $new_height); // Update the rack commitUpdateObject($rack_id, $new_name, NULL, $new_has_problems, $new_asset_no, $new_comment); recordObjectHistory($rack_id); }
function dynamic_title_decoder($path_position) { global $sic, $page_by_realm; static $net_id; try { switch ($path_position) { case 'index': return array('name' => '/' . getConfigVar('enterprise'), 'params' => array()); case 'chapter': $chapter_no = assertUIntArg('chapter_no'); $chapters = getChapterList(); $chapter_name = isset($chapters[$chapter_no]) ? $chapters[$chapter_no]['name'] : 'N/A'; return array('name' => "Chapter '{$chapter_name}'", 'params' => array('chapter_no' => $chapter_no)); case 'user': $userinfo = spotEntity('user', assertUIntArg('user_id')); return array('name' => "Local user '" . $userinfo['user_name'] . "'", 'params' => array('user_id' => $userinfo['user_id'])); case 'ipv4rspool': $pool_info = spotEntity('ipv4rspool', assertUIntArg('pool_id')); return array('name' => !strlen($pool_info['name']) ? 'ANONYMOUS' : $pool_info['name'], 'params' => array('pool_id' => $pool_info['id'])); case 'ipv4vs': $vs_info = spotEntity('ipv4vs', assertUIntArg('vs_id')); return array('name' => $vs_info['dname'], 'params' => array('vs_id' => $vs_info['id'])); case 'ipvs': $vs_info = spotEntity('ipvs', assertUIntArg('vs_id')); return array('name' => $vs_info['name'], 'params' => array('vs_id' => $vs_info['id'])); case 'object': $object = spotEntity('object', assertUIntArg('object_id')); return array('name' => $object['dname'], 'params' => array('object_id' => $object['id'])); case 'location': $location = spotEntity('location', assertUIntArg('location_id')); return array('name' => $location['name'], 'params' => array('location_id' => $location['id'])); case 'row': global $pageno; switch ($pageno) { case 'rack': $rack = spotEntity('rack', assertUIntArg('rack_id')); return array('name' => $rack['row_name'], 'params' => array('row_id' => $rack['row_id'], 'location_id' => $rack['location_id'])); case 'row': $row_info = getRowInfo(assertUIntArg('row_id')); return array('name' => $row_info['name'], 'params' => array('row_id' => $row_info['id'], 'location_id' => $row_info['location_id'])); default: break; } case 'rack': $rack_info = spotEntity('rack', assertUIntArg('rack_id')); return array('name' => $rack_info['name'], 'params' => array('rack_id' => $rack_info['id'])); case 'search': if (isset($_REQUEST['q'])) { return array('name' => "search results for '{$_REQUEST['q']}'", 'params' => array('q' => $_REQUEST['q'])); } else { return array('name' => 'search results', 'params' => array()); } case 'file': $file = spotEntity('file', assertUIntArg('file_id')); return array('name' => niftyString($file['name'], 30, FALSE), 'params' => array('file_id' => $_REQUEST['file_id'])); case 'ipaddress': $address = getIPAddress(ip_parse($_REQUEST['ip'])); return array('name' => niftyString($address['ip'] . ($address['name'] != '' ? ' (' . $address['name'] . ')' : ''), 50, FALSE), 'params' => array('ip' => $address['ip'])); case 'ipv4net': case 'ipv6net': global $pageno; switch ($pageno) { case 'ipaddress': $net = spotNetworkByIP(ip_parse($_REQUEST['ip'])); $ret = array('name' => $net['ip'] . '/' . $net['mask'], 'params' => array('id' => $net['id'], 'page' => $net['realm'], 'hl_ip' => $_REQUEST['ip'])); return $ret; default: $net = spotEntity($path_position, assertUIntArg('id')); return array('name' => $net['ip'] . '/' . $net['mask'], 'params' => array('id' => $net['id'])); } break; case 'ipv4space': case 'ipv6space': global $pageno; switch ($pageno) { case 'ipaddress': $net_id = getIPAddressNetworkId(ip_parse($_REQUEST['ip'])); break; case 'ipv4net': case 'ipv6net': $net_id = $_REQUEST['id']; break; default: $net_id = NULL; } $params = array(); if (isset($net_id)) { $params = array('eid' => $net_id, 'hl_net' => 1, 'clear-cf' => ''); } unset($net_id); $ip_ver = preg_replace('/[^\\d]*/', '', $path_position); return array('name' => "IPv{$ip_ver} space", 'params' => $params); case 'vlandomain': global $pageno; switch ($pageno) { case 'vlandomain': $vdom_id = $_REQUEST['vdom_id']; break; case 'vlan': list($vdom_id, $dummy) = decodeVLANCK($_REQUEST['vlan_ck']); break; default: break; } $vdlist = getVLANDomainOptions(); if (!array_key_exists($vdom_id, $vdlist)) { throw new EntityNotFoundException('VLAN domain', $vdom_id); } return array('name' => niftyString("domain '" . $vdlist[$vdom_id] . "'", 20, FALSE), 'params' => array('vdom_id' => $vdom_id)); case 'vlan': return array('name' => formatVLANAsPlainText(getVLANInfo($sic['vlan_ck'])), 'params' => array('vlan_ck' => $sic['vlan_ck'])); case 'vst': $vst = spotEntity('vst', $sic['vst_id']); return array('name' => niftyString("template '" . $vst['description'] . "'", 50, FALSE), 'params' => array('vst_id' => $sic['vst_id'])); case 'dqueue': global $dqtitle; return array('name' => 'queue "' . $dqtitle[$sic['dqcode']] . '"', 'params' => array('qcode' => $sic['dqcode'])); default: break; } // default behaviour is throwing an exception throw new RackTablesError('dynamic_title decoding error', RackTablesError::INTERNAL); } catch (RackTablesError $e) { return array('name' => __FUNCTION__ . '() failure', 'params' => array()); } }
$query = "SELECT id,name FROM Rack WHERE name = '" . $_REQUEST["name"] . "';"; $result = usePreparedSelectBlade($query); foreach ($result as $key => $rack) { if ($rack) { # if exists, then return echo json_encode(array("result" => $rack["id"])); return; } } $taglist = genericAssertion('taglist', 'array0'); // default row id global $defaultRowId; if (!isset($_REQUEST["row_id"])) { $_REQUEST["row_id"] = $defaultRowId; } $rowInfo = getRowInfo($_REQUEST["row_id"]); $sort_order = $rowInfo['count'] + 1; if (!isset($_REQUEST["asset_no"])) { $_REQUEST["asset_no"] = ""; } $rack_id = commitAddObject($_REQUEST['name'], NULL, 1560, $_REQUEST["asset_no"], $taglist); // Set the height and sort order if (!isset($_REQUEST["height"])) { $_REQUEST["height"] = 42; } commitUpdateAttrValue($rack_id, 27, $_REQUEST["height"]); commitUpdateAttrValue($rack_id, 29, $sort_order); // Link it to the row commitLinkEntities('row', $_REQUEST['row_id'], 'rack', $rack_id); echo json_encode(array("result" => $rack_id)); return;
function getWattsPerRow() { // assertions // find the needed attributes global $nextorder; // Was this function called with a specific row_id? if (isset($_REQUEST['row_id'])) { assertStringArg('row_id'); $row_toshow = $_REQUEST['row_id']; } else { $row_toshow = -1; } //from renderRackspace(), interface.php:151 $found_racks = array(); $rows = array(); $cellfilter = getCellFilter(); $rackCount = 0; $order = 'odd'; // get rackspace information foreach (getAllRows() as $row_id => $rowInfo) { $rackList = filterCellList(listCells('rack', $row_id), $cellfilter['expression']); $found_racks = array_merge($found_racks, $rackList); $rows[] = array('location_id' => $rowInfo['location_id'], 'location_name' => $rowInfo['location_name'], 'row_id' => $row_id, 'row_name' => $rowInfo['name'], 'racks' => $rackList); $rackCount += count($rackList); } // Main layout starts. echo "<table border=0 class=objectview cellspacing=0 cellpadding=0>"; // Left portlet with list of rows. echo "<tr><td class=pcleft width='50%'>"; startPortlet('Rack Rows (' . count($rows) . ')'); echo "<table border=0 cellspacing=0 cellpadding=3 width='100%'>\n"; foreach ($rows as $row) { $row_id = $row['row_id']; $row_name = $row['row_name']; $row_location = $row['location_name']; $rackList = $row['racks']; echo "<tr class=row_{$order}><td width='20%'></td><td class=tdleft>"; if (!count($rackList)) { echo "{$row_location} - {$row_name} (empty row)"; } else { echo "<a href='" . makeHref(array('page' => 'reports', 'tab' => 'watts_per_row', 'row_id' => $row_id)) . "'>{$row_location} - {$row_name}</a>"; } echo "<td><tr>\n"; $order = $nextorder[$order]; } echo "</td></tr>\n"; echo "</table><br>\n"; finishPortlet(); echo "</td><td class=pcright>"; // Right Portlet: Draw the racks in the selected row if ($row_toshow > -1) { $rowInfo = getRowInfo($row_toshow); $cellfilter = getCellFilter(); $rackList = filterCellList(listCells('rack', $row_toshow), $cellfilter['expression']); $rackwidth = getRackImageWidth() * getConfigVar('ROW_SCALE'); // Maximum number of racks per row is proportionally less, but at least 1. $maxPerRow = max(floor(getConfigVar('RACKS_PER_ROW') / getConfigVar('ROW_SCALE')), 1); $rackListIdx = 0; $rowTotalWattage = 0; $order = 'odd'; startPortlet('Racks within ' . $rowInfo['name'] . ' (' . count($rackList) . ')'); echo "<table border=0 cellspacing=5 align='center'><tr>"; foreach ($rackList as $rack) { $rackTotalWattage = 0; // see renderRack(), interface.php:311 $rackData = spotEntity('rack', $rack['id']); amplifyCell($rackData); $objectChildren = getEntityRelatives('children', 'object', $objectData['id']); foreach ($rackData['mountedObjects'] as $object) { $objectData = spotEntity('object', $object); amplifyCell($objectData); foreach (getAttrValues($objectData['id']) as $record) { if ($record['name'] == 'Wattage consumption') { $rackTotalWattage += $record['value']; } } } if ($rackListIdx % $maxPerRow == 0) { echo $rackListIdx > 0 ? '</tr><tr>' : '<tr>'; } echo "<td align=center class=row_{$order}><a href='" . makeHref(array('page' => 'rack', 'rack_id' => $rack['id'])) . "'>"; echo "<img border=0 width={$rackwidth} height=" . getRackImageHeight($rack['height']) * getConfigVar('ROW_SCALE'); echo " title='{$rack['height']} units'"; echo "src='?module=image&img=minirack&rack_id={$rack['id']}'>"; echo "<br>{$rack['name']} ({$rackTotalWattage})</a></td>"; $order = $nextorder[$order]; $rackListIdx++; $rowTotalWattage += $rackTotalWattage; } echo "</tr><tr><td align=center colspan="; print count($rackList); echo "><br><b>The row total for attribute Wattage consuption is: {$rowTotalWattage}</b></td>\n"; echo "</tr></table>\n"; finishPortlet(); } echo "</td></tr></table>"; }