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);
}
Example #3
0
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');
}
Example #5
0
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%'>&nbsp;</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%'>&nbsp;</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";
}
Example #6
0
File: api.php Project: xtha/salt
     $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';