function initZabbixHost($hostgroupDatas) { $allObjects = scanRealmByText('object'); foreach ($allObjects as $object) { // get group data $groups = array(); $parentRacks = getResidentRacksData($object['id']); foreach ($parentRacks as $key => $rack) { array_push($groups, array('groupid' => $hostgroupDatas[$rack['name']])); } // set interfaces $interfaces = array(); $allocs = getObjectIPAllocations($object['id']); $current_ips = array(); foreach ($allocs as $alloc) { $interface = array('type' => 1, "main" => 0, "useip" => 1, "ip" => $alloc["addrinfo"]["ip"], "dns" => "", "port" => "10050"); array_push($interfaces, $interface); } if (count($interfaces) < 1) { $interface = array('type' => 1, "main" => 1, "useip" => 1, "ip" => "127.0.0.1", "dns" => "", "port" => "10050"); array_push($interfaces, $interface); } else { $interfaces[0]['main'] = 1; } // insert host $params = array('host' => $object['name'], 'groups' => $groups, 'interfaces' => $interfaces); $result = doPost('host.create', $params); // set result $id = isset($result['result']) ? $result['result']['hostids'][0] : -1; if ($id < 0) { http_response_code(500); exit; } } }
function deleteRackTablesData() { // delete racktables items data $query = 'delete from item_information;'; usePreparedExecuteBlade($query); // delete racktables object data $allObjects = scanRealmByText('object'); foreach ($allObjects as $object) { $racklist = getResidentRacksData($object["id"], FALSE); commitDeleteObject($object["id"]); foreach ($racklist as $rack_id) { usePreparedDeleteBlade('RackThumbnail', array('rack_id' => $rack_id)); } } // delete racktables rack data $allRacks = scanRealmByText('rack'); foreach ($allRacks as $rack) { releaseFiles('rack', $rack['id']); destroyTagsForEntity('rack', $rack['id']); usePreparedDeleteBlade('RackSpace', array('rack_id' => $rack['id'])); commitDeleteObject($rack['id']); resetRackSortOrder($rack['row_id']); } $query = 'delete from rack_position;'; usePreparedExecuteBlade($query); $query = 'delete from rack_airconditioner;'; usePreparedExecuteBlade($query); }
function resetObject() { $racklist = getResidentRacksData(getBypassValue(), FALSE); commitResetObject(getBypassValue()); foreach ($racklist as $rack_id) { usePreparedDeleteBlade('RackThumbnail', array('rack_id' => $rack_id)); } showFuncMessage(__FUNCTION__, 'OK'); }
function resetObject() { $racklist = getResidentRacksData(getBypassValue(), FALSE); commitResetObject(getBypassValue()); foreach ($racklist as $rack_id) { usePreparedDeleteBlade('RackThumbnail', array('rack_id' => $rack_id)); } ############################################################################################### # remain name. $object_id = getBypassValue(); $object = spotEntity('object', $object_id); usePreparedUpdateBlade('Object', array('name' => $object['name'], 'label' => ''), array('id' => $object_id)); $result = resetHost($object['name']); if (isset($result['error'])) { showError('Resetting zabbix host is failed. Error messageļ¼' . $result['error']); } # END ############################################################################################### showFuncMessage(__FUNCTION__, 'OK'); }
function renderRackSpaceForObject($object_id) { // Always process occupied racks plus racks chosen by user. First get racks with // already allocated rackspace... $workingRacksData = getResidentRacksData($object_id); // ...and then add those chosen by user (if any). if (isset($_REQUEST['rackmulti'])) { foreach ($_REQUEST['rackmulti'] as $cand_id) { if (!isset($workingRacksData[$cand_id])) { $rackData = spotEntity('rack', $cand_id); amplifyCell($rackData); $workingRacksData[$cand_id] = $rackData; } } } // Get a list of all of this object's parents, // then trim the list to only include parents that are racks $objectParents = getEntityRelatives('parents', 'object', $object_id); $parentRacks = array(); foreach ($objectParents as $parentData) { if ($parentData['entity_type'] == 'rack') { $parentRacks[] = $parentData['entity_id']; } } // Main layout starts. echo "<table border=0 class=objectview cellspacing=0 cellpadding=0><tr>"; // Left portlet with rack list. echo "<td class=pcleft height='1%'>"; startPortlet('Racks'); $allRacksData = listCells('rack'); // filter rack list to match only racks having common tags with the object (reducing $allRacksData) if (!isset($_REQUEST['show_all_racks']) and getConfigVar('FILTER_RACKLIST_BY_TAGS') == 'yes') { $matching_racks = array(); $object = spotEntity('object', $object_id); $matched_tags = array(); foreach ($allRacksData as $rack) { foreach ($object['etags'] as $tag) { if (tagOnChain($tag, $rack['etags']) or tagOnChain($tag, $rack['itags'])) { $matching_racks[$rack['id']] = $rack; $matched_tags[$tag['id']] = $tag; break; } } } // add current object's racks even if they dont match filter foreach ($workingRacksData as $rack_id => $rack) { if (!isset($matching_racks[$rack_id])) { $matching_racks[$rack_id] = $rack; } } // if matching racks found, and rack list is reduced, show 'show all' link if (count($matching_racks) and count($matching_racks) != count($allRacksData)) { $filter_text = ''; foreach ($matched_tags as $tag) { $filter_text .= (empty($filter_text) ? '' : ' or ') . '{' . $tag['tag'] . '}'; } $href_show_all = trim($_SERVER['REQUEST_URI'], '&'); $href_show_all .= htmlspecialchars('&show_all_racks=1'); echo "(filtered by <span class='filter-text'>{$filter_text}</span>, <a href='{$href_show_all}'>show all</a>)<p>"; $allRacksData = $matching_racks; } } if (count($allRacksData) <= getConfigVar('RACK_PRESELECT_THRESHOLD')) { foreach ($allRacksData as $rack) { if (!array_key_exists($rack['id'], $workingRacksData)) { amplifyCell($rack); $workingRacksData[$rack['id']] = $rack; } } } foreach (array_keys($workingRacksData) as $rackId) { applyObjectMountMask($workingRacksData[$rackId], $object_id); } printOpFormIntro('updateObjectAllocation'); renderRackMultiSelect('rackmulti[]', $allRacksData, array_keys($workingRacksData)); echo "<br><br>"; finishPortlet(); echo "</td>"; // Middle portlet with comment and submit. echo "<td class=pcleft>"; startPortlet('Comment (for Rackspace History)'); echo "<textarea name=comment rows=10 cols=40></textarea><br>\n"; echo "<input type=submit value='Save' name=got_atoms>\n"; echo "<br><br>"; finishPortlet(); echo "</td>"; // Right portlet with rendered racks. If this form submit is not final, we have to // reflect the former state of the grid in current form. echo "<td class=pcright rowspan=2 height='1%'>"; startPortlet('Working copy'); includeJQueryUI(false); addJS('js/racktables.js'); addJS('js/bulkselector.js'); echo '<table border=0 cellspacing=10 align=center><tr>'; foreach ($workingRacksData as $rack_id => $rackData) { // Order is important here: only original allocation is highlighted. highlightObject($rackData, $object_id); markupAtomGrid($rackData, 'T'); // If we have a form processed, discard user input and show new database // contents. if (isset($_REQUEST['rackmulti'][0])) { // is an update mergeGridFormToRack($rackData); } echo "<td valign=top>"; echo "<center>\n<h2>{$rackData['name']}</h2>\n"; echo "<table class=rack id=selectableRack border=0 cellspacing=0 cellpadding=1>\n"; echo "<tr><th width='10%'> </th>"; echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('{$rack_id}', '0', {$rackData['height']})\">Front</a></th>"; echo "<th width='50%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('{$rack_id}', '1', {$rackData['height']})\">Interior</a></th>"; echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('{$rack_id}', '2', {$rackData['height']})\">Back</a></th></tr>\n"; renderAtomGrid($rackData); echo "<tr><th width='10%'> </th>"; echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('{$rack_id}', '0', {$rackData['height']})\">Front</a></th>"; echo "<th width='50%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('{$rack_id}', '1', {$rackData['height']})\">Interior</a></th>"; echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('{$rack_id}', '2', {$rackData['height']})\">Back</a></th></tr>\n"; echo "</table>\n<br>\n"; // Determine zero-u checkbox status. // If form has been submitted, use form data, otherwise use DB data. if (isset($_REQUEST['op'])) { $checked = isset($_REQUEST['zerou_' . $rack_id]) ? 'checked' : ''; } else { $checked = in_array($rack_id, $parentRacks) ? 'checked' : ''; } echo "<label for=zerou_{$rack_id}>Zero-U:</label> <input type=checkbox {$checked} name=zerou_{$rack_id} id=zerou_{$rack_id}>\n<br><br>\n"; echo "<input type='button' onclick='uncheckAll();' value='Uncheck all'>\n"; echo '</center></td>'; } echo "</tr></table>"; finishPortlet(); echo "</td>\n"; echo "</form>\n"; echo "</tr></table>\n"; }
$port_info = getPortInfo($_REQUEST['port_id']); sendAPIResponse($port_info); break; // delete an object // UI equivalent: /index.php?module=redirect&op=deleteObject&page=depot&tab=addmore&object_id=993 // (typically a link from edit object page) // UI handler: deleteObject() // delete an object // UI equivalent: /index.php?module=redirect&op=deleteObject&page=depot&tab=addmore&object_id=993 // (typically a link from edit object page) // UI handler: deleteObject() case 'delete_object': require_once 'inc/init.php'; assertUIntArg('object_id'); // determine racks the object is in $racklist = getResidentRacksData($_REQUEST['object_id'], FALSE); commitDeleteObject($_REQUEST['object_id']); foreach ($racklist as $rack_id) { usePreparedDeleteBlade('RackThumbnail', array('rack_id' => $rack_id)); } // redirect to the depot method redirectUser($_SERVER['SCRIPT_NAME'] . "?method=get_depot"); break; // get all objects // UI equivalent: /index.php?page=depot&tab=default // UI handler: renderDepot() // get all objects // UI equivalent: /index.php?page=depot&tab=default // UI handler: renderDepot() case 'get_depot': require_once 'inc/init.php';