/**
 * Returns object data array.
 * @param $obj_id (int) Object ID.
 * @param $ilo (array) Data required to access ILO on servers.
 * @param $capacity (array) Count used and free ports.
 * @return array Object data array.
 */
function F_get_object_data_array($obj_id, &$ilo = array(), &$capacity = array())
{
    global $l, $db;
    require_once '../config/tce_config.php';
    require_once 'tce_functions_group_permissions.php';
    $obj_id = intval($obj_id);
    $objdata = array();
    if (empty($obj_id)) {
        return $data;
    }
    // type of ports used on capacity calculation
    $port_types = array('NIC', 'OUTLET', 'PRT');
    // 'ILO','NIC','OUTLET','PRT','PSU'
    // get first level data
    $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ' LEFT JOIN ' . K_TABLE_LOCATIONS . ' ON obj_id=loc_obj_id WHERE obj_id=' . $obj_id . ' LIMIT 1';
    if ($r = F_db_query($sql, $db)) {
        if ($m = F_db_fetch_assoc($r)) {
            $objdata = $m;
        }
    } else {
        F_display_db_error();
    }
    // object type
    if (isset($objdata['obj_obt_id']) and $objdata['obj_obt_id'] > 0) {
        $sql = 'SELECT * FROM ' . K_TABLE_OBJECT_TYPES . ' WHERE obt_id=' . $objdata['obj_obt_id'] . ' LIMIT 1';
        if ($r = F_db_query($sql, $db)) {
            if ($m = F_db_fetch_assoc($r)) {
                $objdata['obj_obt_name'] = $m['obt_name'];
                $objdata['obj_obt_description'] = $m['obt_description'];
                //$objdata['obj_obt_color'] = $m['obt_color'];
                $objdata['obj_obt_virtual'] = F_getBoolean($m['obt_virtual']);
                // list parent objects of virtual object
                if ($objdata['obj_obt_virtual']) {
                    $objdata['obj_parents'] = '';
                    $sqlp = 'SELECT omp_parent_obj_id FROM ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=' . $obj_id . '';
                    if ($rp = F_db_query($sqlp, $db)) {
                        while ($mp = F_db_fetch_array($rp)) {
                            $objdata['obj_parents'] .= '<br />' . F_get_object_path($mp['omp_parent_obj_id'], true, $odcn_id, $osts_id, $orck_id);
                        }
                        if (!empty($objdata['obj_parents'])) {
                            $objdata['obj_parents'] = substr($objdata['obj_parents'], 6);
                        }
                    } else {
                        F_display_db_error();
                    }
                }
            }
        } else {
            F_display_db_error();
        }
    }
    // manufacturer
    if (isset($objdata['obj_mnf_id']) and $objdata['obj_mnf_id'] > 0) {
        $sql = 'SELECT mnf_name FROM ' . K_TABLE_MANUFACTURES . ' WHERE mnf_id=' . $objdata['obj_mnf_id'] . ' LIMIT 1';
        if ($r = F_db_query($sql, $db)) {
            if ($m = F_db_fetch_assoc($r)) {
                $objdata['obj_mnf'] = $m['mnf_name'];
            }
        } else {
            F_display_db_error();
        }
    }
    // owner
    if (isset($objdata['obj_owner_id']) and $objdata['obj_owner_id'] > 0) {
        $sql = 'SELECT * FROM ' . K_TABLE_USERS . ' WHERE user_id=' . $objdata['obj_owner_id'] . ' LIMIT 1';
        if ($r = F_db_query($sql, $db)) {
            if ($m = F_db_fetch_assoc($r)) {
                $objdata['obj_owner'] = $m['user_lastname'] . ' ' . $m['user_firstname'] . ' - ' . $m['user_name'];
            }
        } else {
            F_display_db_error();
        }
    }
    // tenant
    if (isset($objdata['obj_tenant_id']) and $objdata['obj_tenant_id'] > 0) {
        $sql = 'SELECT * FROM ' . K_TABLE_USERS . ' WHERE user_id=' . $objdata['obj_tenant_id'] . ' LIMIT 1';
        if ($r = F_db_query($sql, $db)) {
            if ($m = F_db_fetch_assoc($r)) {
                $objdata['obj_tenant'] = $m['user_lastname'] . ' ' . $m['user_firstname'] . ' - ' . $m['user_name'];
            }
        } else {
            F_display_db_error();
        }
    }
    // get all possible attributes
    $sql = 'SELECT * FROM ' . K_TABLE_OBJECT_ATTRIBUTES_MAP . ', ' . K_TABLE_ATTRIBUTE_TYPES . ' WHERE oam_atb_id=atb_id AND oam_obt_id=' . $objdata['obj_obt_id'] . ' ORDER BY atb_name';
    if ($r = F_db_query($sql, $db)) {
        while ($m = F_db_fetch_assoc($r)) {
            if ($m['atb_type'] == 'bool') {
                $objdata['attribute'][$m['atb_name']] = '0';
            } else {
                $objdata['attribute'][$m['atb_name']] = '';
            }
        }
    } else {
        F_display_db_error();
    }
    // get attribute values
    $sqla = 'SELECT *
		FROM ' . K_TABLE_ATTRIBUTE_VALUES . ', ' . K_TABLE_ATTRIBUTE_TYPES . '
		WHERE atb_id=atv_atb_id AND atv_obj_id=' . $obj_id . ' ORDER BY atb_name';
    if ($ra = F_db_query($sqla, $db)) {
        while ($ma = F_db_fetch_assoc($ra)) {
            if (isset($ma['atv_value'][0])) {
                $objdata['attribute'][$ma['atb_name']] = $ma['atv_value'];
                // get ILO user and password
                if ($ma['atb_name'] == 'ILO user') {
                    $ilo['user'] = $ma['atv_value'];
                } elseif ($ma['atb_name'] == 'ILO password') {
                    $ilo['password'] = $ma['atv_value'];
                }
                if ($objdata['obj_name'] == 'ILO' and ($ma['atb_name'] == 'IP' or $ma['atb_name'] == 'IPv4' or $ma['atb_name'] == 'IPv6')) {
                    $ilo['ip'] = $ma['atv_value'];
                }
            }
        }
    } else {
        F_display_db_error();
    }
    // get permission info
    $objdata['permissions'] = F_getGroupsPermissions(K_TABLE_OBJECT_GROUPS, $obj_id);
    // get connections
    $objdata['connection'] = F_get_object_connections_array($obj_id);
    // calculate capacity for some object types
    if (in_array($objdata['obj_obt_name'], $port_types)) {
        if (!isset($capacity[$objdata['obj_obt_name']])) {
            $capacity[$objdata['obj_obt_name']] = array('total' => 0, 'used' => 0, 'free' => 0);
        }
        ++$capacity[$objdata['obj_obt_name']]['total'];
        if (empty($objdata['connection'])) {
            // free port
            ++$capacity[$objdata['obj_obt_name']]['free'];
        } else {
            // used port
            ++$capacity[$objdata['obj_obt_name']]['used'];
        }
    }
    // *** get data from child ojbects (if any)
    $sql = 'SELECT obj_id, obj_name, obj_label, obj_tag FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=obj_id AND omp_parent_obj_id=' . $obj_id . ' ORDER BY obj_name ASC';
    if ($r = F_db_query($sql, $db)) {
        while ($m = F_db_fetch_assoc($r)) {
            $objdata['child'][$m['obj_name']] = F_get_object_data_array($m['obj_id'], $ilo, $capacity);
        }
    } else {
        F_display_db_error();
    }
    return $objdata;
}
Example #2
0
    default:
        break;
}
//end of switch
// --- Initialize variables
if ($formstatus) {
    if ($menu_mode != 'clear') {
        if (isset($_REQUEST['change_datacenter']) and !empty($_REQUEST['change_datacenter']) or !isset($sts_id) or empty($sts_id)) {
            $sts_id = 0;
            $sts_name = '';
            $sts_description = '';
            $sts_floor = 0;
            $sts_width = 30;
            $sts_height = 30;
        } else {
            $perms = F_getGroupsPermissions(K_TABLE_SUITE_GROUPS, $sts_id);
            $sql = 'SELECT * FROM ' . K_TABLE_SUITES . ' WHERE sts_id=' . $sts_id . ' LIMIT 1';
            if ($r = F_db_query($sql, $db)) {
                if ($m = F_db_fetch_array($r)) {
                    $sts_id = $m['sts_id'];
                    $dcn_id = $m['sts_dcn_id'];
                    $sts_name = $m['sts_name'];
                    $sts_description = $m['sts_description'];
                    $sts_floor = $m['sts_floor'];
                    $sts_width = $m['sts_width'];
                    $sts_height = $m['sts_height'];
                } else {
                    $sts_name = '';
                    $sts_description = '';
                    $sts_floor = 0;
                    $sts_width = 30;
        $dcn_description = '';
        $dcn_website_url = '';
        $dcn_map_url = '';
        break;
    default:
        break;
}
//end of switch
// --- Initialize variables
if ($formstatus) {
    if ($menu_mode != 'clear') {
        if (!isset($dcn_id) or empty($dcn_id)) {
            $dcn_id = 0;
            $dcn_name = '';
        } else {
            $perms = F_getGroupsPermissions(K_TABLE_DATACENTER_GROUPS, $dcn_id);
            $sql = 'SELECT * FROM ' . K_TABLE_DATACENTERS . ' WHERE dcn_id=' . $dcn_id . ' LIMIT 1';
            if ($r = F_db_query($sql, $db)) {
                if ($m = F_db_fetch_array($r)) {
                    $dcn_id = $m['dcn_id'];
                    $dcn_name = $m['dcn_name'];
                    $dcn_description = $m['dcn_description'];
                    $dcn_website_url = $m['dcn_website_url'];
                    $dcn_map_url = $m['dcn_map_url'];
                } else {
                    $dcn_name = '';
                    $dcn_description = '';
                    $dcn_website_url = '';
                    $dcn_map_url = '';
                }
            } else {
Example #4
0
    default:
        break;
}
//end of switch
// --- Initialize variables
if ($formstatus) {
    if ($menu_mode != 'clear') {
        if (isset($_REQUEST['change_datacenter']) and !empty($_REQUEST['change_datacenter']) or isset($_REQUEST['change_suite']) and !empty($_REQUEST['change_suite']) or !isset($rck_id) or empty($rck_id)) {
            $rck_id = 0;
            $rck_name = '';
            $rck_description = '';
            $rck_label = '';
            $rck_tag = '';
            $rck_height = 42;
        } else {
            $perms = F_getGroupsPermissions(K_TABLE_RACK_GROUPS, $rck_id);
            $sql = 'SELECT * FROM ' . K_TABLE_RACKS . ' WHERE rck_id=' . $rck_id . ' LIMIT 1';
            if ($r = F_db_query($sql, $db)) {
                if ($m = F_db_fetch_array($r)) {
                    $rck_id = $m['rck_id'];
                    $sts_id = $m['rck_sts_id'];
                    $rck_name = $m['rck_name'];
                    $rck_description = $m['rck_description'];
                    $rck_label = $m['rck_label'];
                    $rck_tag = $m['rck_tag'];
                    $rck_height = $m['rck_height'];
                    $rck_position_x = $m['rck_position_x'];
                    $rck_position_y = $m['rck_position_y'];
                } else {
                    $rck_name = '';
                    $rck_description = '';
Example #5
0
     if (($dcn_perm & 1) > 0 and ($sts_perm & 1) > 0) {
         $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']] = array('sts_id' => $m['sts_id'], 'sts_dcn_id' => $m['sts_dcn_id'], 'sts_name' => $m['sts_name'], 'sts_description' => $m['sts_description'], 'sts_floor' => $m['sts_floor'], 'sts_width' => $m['sts_width'], 'sts_height' => $m['sts_height'], 'rack' => array());
         if ($userlevel >= K_AUTH_ADMINISTRATOR) {
             $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['sts_permissions'] = F_getGroupsPermsDesc(F_getGroupsPermissions(K_TABLE_SUITE_GROUPS, $m['sts_id']));
         }
     }
     $prev_sts_id = $m['sts_id'];
 }
 // rack data
 if ($m['rck_id'] != $prev_rck_id) {
     $rck_perm = F_getUserPermission($user_id, K_TABLE_RACK_GROUPS, $m['rck_id']);
     if (($dcn_perm & 1) > 0 and ($sts_perm & 1) > 0 and ($rck_perm & 1) > 0) {
         $rck_value = $m;
         $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['rack']['RCK' . $m['rck_id']] = array('rck_id' => $m['rck_id'], 'rck_sts_id' => $m['rck_sts_id'], 'rck_name' => $m['rck_name'], 'rck_description' => $m['rck_description'], 'rck_label' => $m['rck_label'], 'rck_tag' => $m['rck_tag'], 'rck_height' => $m['rck_height'], 'rck_position_x' => $m['rck_position_x'], 'rck_position_y' => $m['rck_position_y'], 'rck_table' => getRackStack($m['dcn_id'], $m['sts_id'], $m['rck_id'], $rck_value), 'rck_rackstack' => $rck_value['rackstack'], 'rck_free_slots' => $rck_value['free_slots'], 'object' => array());
         if ($userlevel >= K_AUTH_ADMINISTRATOR) {
             $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['rack']['RCK' . $m['rck_id']]['rck_permissions'] = F_getGroupsPermsDesc(F_getGroupsPermissions(K_TABLE_RACK_GROUPS, $m['rck_id']));
         }
     }
     $prev_rck_id = $m['rck_id'];
 }
 $obj_perm = F_getUserPermission($user_id, K_TABLE_OBJECT_GROUPS, $m['obj_id']);
 if (($obj_perm & 1) > 0) {
     // object data
     $objdata = F_get_object_data_array($m['obj_id'], $ilo, $capacity);
     if (isset($capacity) and !empty($capacity)) {
         $objdata['capacity'] = $capacity;
     }
     // get all groups IDs
     $perm_groups = array_merge($perm_groups, array_keys($objdata['permissions']));
     if ($userlevel >= K_AUTH_ADMINISTRATOR) {
         $objdata['permissions'] = F_getGroupsPermsDesc($objdata['permissions']);
Example #6
0
     $cab_b_cbt_id = 1;
     $cab_a_color = '';
     $cab_b_color = '';
     // set empty values for attributes
     $sql = 'SELECT * FROM ' . K_TABLE_OBJECT_ATTRIBUTES_MAP . ', ' . K_TABLE_ATTRIBUTE_TYPES . ' WHERE oam_atb_id=atb_id ORDER BY atb_name';
     if ($r = F_db_query($sql, $db)) {
         while ($m = F_db_fetch_array($r)) {
             $anum = sprintf('%03d', $m['atb_id']);
             $afield = 'atb_id_' . $anum;
             ${$afield} = $m['atb_default'];
         }
     } else {
         F_display_db_error();
     }
 } else {
     $perms = F_getGroupsPermissions(K_TABLE_OBJECT_GROUPS, $obj_id);
     $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ' LEFT JOIN ' . K_TABLE_LOCATIONS . ' ON obj_id=loc_obj_id WHERE obj_id=' . $obj_id . ' LIMIT 1';
     if ($r = F_db_query($sql, $db)) {
         if ($m = F_db_fetch_array($r)) {
             $obj_id = $m['obj_id'];
             $obj_obt_id = $m['obj_obt_id'];
             $obj_name = $m['obj_name'];
             $obj_description = $m['obj_description'];
             $obj_label = $m['obj_label'];
             $obj_tag = $m['obj_tag'];
             $obj_mnf_id = $m['obj_mnf_id'];
             $obj_owner_id = $m['obj_owner_id'];
             $obj_tenant_id = $m['obj_tenant_id'];
             $loc_rack_id = $m['loc_rack_id'];
             $loc_row_top = $m['loc_row_top'];
             $loc_row_bottom = $m['loc_row_bottom'];