public function action_new() { $out = 0; if ($_POST) { $val = \Validation::forge(); $val->add_field('rack', 'rack id', 'required|min_length[1]|max_length[20]'); $val->add_field('p', 'position left|right', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $rack = Model_Rack::find($val->validated('rack')); if ($rack) { $size = $rack->size; //left or right side pdu if ($val->validated('p') == 'l') { $m = 1; } else { $m = 2; } $devs = Model_Device::find()->where('rack', $rack->id)->where('cat', 4)->where('meta_default_data', $m)->get(); $pos = $this->empty_space($devs, $rack->size); if ($pos >= 0) { $props = array('hostname' => 'vertical pdu', 'type' => 0, 'cat' => 4, 'rack' => $rack->id, 'rack_pos' => 0, 'rack_units' => 0, 'parent_device' => 0, 'meta_default_data' => $m, 'meta_update_time' => time(), 'meta_update_user' => $this->user); //print_r($props); $dev = new Model_Device($props); $dev->save(); $this->add_device_default_fields($dev); $power = Model_Device_Power::find()->where('deviceID', $dev->id)->get_one(); $this->tmpl = false; $power->pos = $pos; $power->input = 1; $power->output = 8; $power->save(); for ($i = 1; $i <= 7; $i++) { $prop = array('powerID' => $power->id, 'conn_type' => 1, 'type' => 2); if ($this->tmpl) { $socket = new Model_Device_Template_Pdu_Socket($prop); } else { $socket = new Model_Device_Power_Socket($prop); } $socket->save(); } $out = array('id' => $power->id, 'ru' => 8, 'pos' => $pos, 'devid' => $dev->id, 'name' => $dev->hostname, 'parent_device' => 0, 'out' => $power['output'], 'cur' => $power['current']); } } } } echo json_encode(array('data' => $out)); }
public function action_remove() { $out = array(); $out['stat'] = false; if ($_POST) { $val = \Validation::forge('rack'); $val->add_field('rid', 'rack id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $rack = Model_Rack::find($val->validated('rid')); if ($rack) { $devices = $rack->device; //delete devices foreach ($devices as $dev) { //remove cables $cables = Model_Cable::find()->where('dev1', $dev->id)->or_where('dev2', $dev->id)->get(); foreach ($cables as $cab) { $cab->delete(); } //get all device field and delete him $dev_fields = Model_Device_Fieldset::find()->where('deviceID', $dev->id)->get(); //we must go with foreach becouse image deleting from hdd foreach ($dev_fields as $dev_field) { $dev_field->delete(); } $dev->delete(); } //shift room position $ord = $rack->room_pos; $room = $rack->room; //delete rack $rack->delete(); $out['stat'] = true; //set room_pos-- on racks with larger room_pos $racks = Model_Rack::find()->where('room', $room)->where('room_pos', '>', $ord)->get(); foreach ($racks as $rack) { $rack->room_pos -= 1; $rack->save(); } } } } echo json_encode($out); }
public function init($id) { $this->device = Model_Device::find($id); $this->setTypeOfDevice(); $this->rack = Model_Rack::find($this->device->rack); $this->template = Model_Device_Template::find($this->device->get('type')); $this->heightlimit = 750; $this->_setTitle(); $this->_AddPage(); $this->zoom = 0.75; $this->rack_set(90, 50, $this->rack->size); $this->device_general(); if ($this->action[0] == 1) { $this->device_hardware(); } if ($this->action[1] == 1) { $this->device_network(); } if ($this->action[2] == 1) { $this->device_notes(); } $this->device_power(); }
public function action_get() { if ($_POST) { $val = \Validation::forge(); $val->add_field('did', 'Device id', 'required|min_length[1]|max_length[18]'); if ($val->run()) { $device = Model_Device::find($val->validated('did')); $rack = Model_Rack::find($device->rack); $room = Model_Room::find($rack->room); $floor = Model_Floor::find($room->floor); $build = Model_Building::find($floor->building); $data = array('id' => $device->id, 'hostname' => $device->hostname, 'rack' => $device->rack, 'rack_pos' => $device->rack_pos, 'rack_units' => $device->rack_units, 'cat' => $device->cat, 'type' => $device->type, 'room' => $room->id, 'floor' => $floor->id, 'build' => $build->id); echo json_encode($data); } } }
/** * * frontend CRUD connector for rack managment ... * @author hrvoje * @param unknown_type $id */ public function action_rack($id = null) { if ($id) { if ($id != 'new') { $rack = Model_Rack::find($id); if ($rack) { $update = $this->isPost('up'); if ($update) { $set = false; //name of rack $name = $this->isPost('name'); if ($name) { $rack->name = $name; $set = true; } //rack size $size = $this->isPost('size'); if ($size) { $rack->size = $size; $set = true; } //save data to rack if ($set) { $rack->meta_update_time = time(); $rack->meta_update_user = $this->user; $rack->save(); echo json_encode(array('success' => 'ok')); } } } } //new rack if ($id == 'new') { $val = \Validation::forge(); $val->add_field('room', 'room id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $ord = 0; $rc = Model_Rack::find()->where('room', $val->validated('room'))->get(); foreach ($rc as $rack) { if ($rack->room_pos > $ord) { $ord = $rack->room_pos; } } //check if room exist $roomdata = Model_Room::find($_POST['room']); if ($roomdata) { $props = array('name' => 'new rack', 'room' => $_POST['room'], 'room_pos' => $ord + 1, 'hidden_rack' => 0, 'size' => 42, 'position' => 0, 'notes' => null, 'meta_default_data' => 0, 'meta_update_time' => time(), 'meta_update_user' => $this->user); //print_r($props); $new = new Model_Rack($props); $new->save(); $rack = array("name" => $new['name'], "units" => $new['size'], "id" => $new['id'], "equs" => array()); // delete gaps $racks = Model_Rack::find()->where('room', $val->validated('room'))->order_by('room_pos', 'asc')->get(); $i = 1; foreach ($racks as $r) { $r->room_pos = $i; $r->save(); $i++; } echo json_encode($rack); } } } if ($id == 'move') { $val = \Validation::forge(); $val->add_field('id', 'rack id', 'required|min_length[1]|max_length[20]'); $val->add_field('room', 'room id', 'required|min_length[1]|max_length[20]'); $val->add_field('ord', 'order', 'required|min_length[1]|max_length[20]'); $val->add_field('to', 'to another room', 'required|min_length[1]|max_length[1]'); if ($val->run()) { $rack = Model_Rack::find()->where('id', $val->validated('id'))->get_one(); if ($rack) { $nr = $val->validated('room'); $no = $val->validated('ord'); $new_room_r = Model_Rack::find()->where('room', $nr)->where('room_pos', '>=', $no)->order_by('room_pos', 'asc')->get(); $old_room_r = Model_Rack::find()->where('room', $rack->room)->where('room_pos', '>=', $rack->room_pos)->order_by('room_pos', 'asc')->get(); // update room set room_pos $n = $no + 1; //2 foreach ($new_room_r as $new_rack) { $new_rack->room_pos = $n; $new_rack->save(); $n++; } $n = $rack->room_pos - 1; //2 foreach ($old_room_r as $old_rack) { if ($n == $no - 1) { $n++; if (!$val->validated('to')) { $no--; } } $old_rack->room_pos = $n; $old_rack->save(); $n++; } \Log::debug("no" . $no); $rack->room = $nr; $rack->room_pos = $no; $rack->save(); // delete gaps $new_room_r = Model_Rack::find()->where('room', $nr)->order_by('room_pos', 'asc')->get(); $old_room_r = Model_Rack::find()->where('room', $rack->room)->order_by('room_pos', 'asc')->get(); $i = 1; foreach ($old_room_r as $old_rack) { $old_rack->room_pos = $i; $old_rack->save(); $i++; } $i = 1; foreach ($new_room_r as $new_rack) { $new_rack->room_pos = $i; $new_rack->save(); $i++; } echo json_encode(array('status' => 'ok')); } } } if ($id == 'pos') { $val = \Validation::forge(); $val->add_field('id', 'rack id', 'required|min_length[1]|max_length[20]'); $val->add_field('pos', 'position id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $rack = Model_Rack::find()->where('id', $val->validated('id'))->get_one(); if ($rack) { $rack->position = $val->validated('pos'); $rack->save(); } echo json_encode(array('status' => 'ok')); } } } }
public function action_index() { $out = array(); if (count($_GET) > 0) { /* 'buildings'=>Array(), 'rooms'=>Array(), 'floors'=>Array(), 'buildings'=>Array(), 'fields'=>Array() */ $key = false; if (isset($_GET['key'])) { $key = $_GET['key']; } if ($key) { $key_right = $key . '%'; $key = '%' . $key . '%'; //device hostname $device = Model_Device::find()->where('hostname', 'like', $key)->limit(5)->where('meta_update_user', $this->user)->get(); $m = array('type' => 'Device', 'tn' => 1, 'items' => array()); foreach ($device as $dev) { $rack = $dev->racks; $room = $rack->rooms; array_push($m['items'], array('id' => $dev->id, 'name' => $dev->hostname, 'room' => $room->id, 'rack' => $rack->id, 'floor' => $room->floors->id, 'building' => $room->floors->buildings->id)); } array_push($out, $m); //buildings $buildings = Model_Building::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Building', 'tn' => 2, 'items' => array()); foreach ($buildings as $bui) { array_push($m['items'], array('id' => $bui->id, 'name' => $bui->name)); } array_push($out, $m); //floors $floors = Model_Floor::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Floor', 'tn' => 3, 'items' => array()); foreach ($floors as $fl) { array_push($m['items'], array('id' => $fl->id, 'name' => $fl->name, 'building' => $fl->buildings->id)); } array_push($out, $m); //rooms $rooms = Model_Room::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Room', 'tn' => 4, 'items' => array()); foreach ($rooms as $rm) { array_push($m['items'], array('id' => $rm->id, 'name' => $rm->name, 'floor' => $rm->floors->id, 'building' => $rm->floors->buildings->id)); } array_push($out, $m); //racks $rack = Model_Rack::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Rack', 'tn' => 5, 'items' => array()); foreach ($rack as $rm) { array_push($m['items'], array('id' => $rm->id, 'name' => $rm->name, 'floor' => $rm->rooms->floors->id, 'room' => $rm->rooms->id, 'building' => $rm->rooms->floors->buildings->id)); } array_push($out, $m); //ip address $query = \DB::query('select distinct * from network_ip_ports where ipv4 like "' . $key_right . '" group by networkID limit 0,5'); $ips = $query->as_object()->execute(); foreach ($ips as $ip) { $tab = $ip->type == 3 ? 6 : 2; $network = Model_Device_Network::find()->where('id', $ip->networkID)->get_one(); $device = $network->device; $m = array('type' => 'IPv4', 'tn' => 6, 'items' => array()); $room = $device->racks->rooms; array_push($m['items'], array('id' => $ip->id, 'name' => $ip->ipv4, 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => $tab, 'dev' => $device->id)); array_push($out, $m); } //raid $query = \DB::query('select df.id, df.name, df.tab, df.deviceID, d.hostname, df.value, hrd.model, hrd.serial_number, hrd.id as "rid" from device as d join device_fieldset as df on df.deviceID = d.id join hardware_raid AS hr on hr.fieldsetID = df.id join hardware_raid_data as hrd on hrd.hardware_raid = hr.id where hrd.model like "' . $key . '" or hrd.serial_number like "' . $key . '" group by hrd.serial_number, hrd.model'); $raid = $query->as_object()->execute(); foreach ($raid as $fd) { $device = Model_Device::find($fd->deviceID); $m = array('type' => $fd->name, 'tn' => 6, 'items' => array()); $room = $device->racks->rooms; array_push($m['items'], array('id' => $fd->id, 'name' => $fd->value, 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => $fd->tab, 'dev' => $fd->deviceID, 'hostname' => $fd->hostname, 'model' => $fd->model, 'serial' => $fd->serial_number, 'rid' => $fd->rid)); array_push($out, $m); } $notes = Model_Notes::find()->where('txt', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Device Notes', 'tn' => 7, 'items' => array()); foreach ($notes as $note) { $device = $note->device; $room = $device->racks->rooms; array_push($m['items'], array('id' => $note->id, 'name' => substr($note->txt, -100), 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => 4, 'dev' => $device->id)); } array_push($out, $m); //ram $query = \DB::query('select df.id, df.name, df.tab, df.deviceID, d.hostname, df.value, hrd.model, hrd.serial_number, hrd.id as "rid" from device as d join device_fieldset as df on df.deviceID = d.id join hardware_ram AS hr on hr.fieldsetID = df.id join hardware_ram_data as hrd on hrd.hardware_ram = hr.id where hrd.model like "' . $key . '" or hrd.serial_number like "' . $key . '" group by hrd.serial_number, hrd.model'); $ram = $query->as_object()->execute(); foreach ($ram as $fd) { $device = Model_Device::find($fd->deviceID); $m = array('type' => $fd->name, 'tn' => 8, 'items' => array()); $room = $device->racks->rooms; array_push($m['items'], array('id' => $fd->id, 'name' => $fd->value, 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => $fd->tab, 'dev' => $fd->deviceID, 'hostname' => $fd->hostname, 'model' => $fd->model, 'serial' => $fd->serial_number, 'rid' => $fd->rid)); array_push($out, $m); } } echo json_encode($out); } }