/** * * frontend device CRUD connector */ public function action_device($id = null) { if ($id) { if ($id != 'new') { } else { //create new device in rack, return value if ($id == 'new') { $val = \Validation::forge(); $val->add_field('rack', 'rack id', 'required|min_length[1]|max_length[20]'); //validate rack if ($val->run()) { $rack = Model_Rack::find($val->validated('rack')); //rack exist if ($rack) { //check position $pos = $this->check_device_position($rack); if ($pos) { $props = array('hostname' => 'new device', 'type' => 0, 'cat' => 0, 'rack' => $rack->id, 'rack_pos' => $pos, 'rack_units' => 1, 'parent_device' => 0, 'meta_default_data' => 0, 'meta_update_time' => time(), 'meta_update_user' => $this->user); //print_r($props); $new = new Model_Device($props); $new->save(); $dev = array("id" => $new['id'], "position" => $new['rack_pos'], "units" => $new['rack_units'], "type" => $new['type'], "cat" => 0, "host" => $new['hostname'], "parent" => $new['parent_device']); } echo json_encode($dev); } } else { $error = $val->error(); print_r($error); } } } } }
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)); }
private function add_switch($rack, $user, $pos, $name) { $props = array('hostname' => $name, 'type' => 0, 'cat' => 2, 'rack' => $rack->id, 'rack_pos' => $pos, 'rack_units' => 1, 'parent_device' => 0, 'meta_default_data' => 0, 'meta_update_time' => time(), 'meta_update_user' => $user); //print_r($props); $this->net_type = 2; $sw = new Model_Device($props); $sw->save(); $this->add_device_default_fields($sw); $network = Model_Device_Network::find()->where('deviceID', $sw->id)->get_one(); $network->ports = 48; $network->save(); $macc = array(); for ($i = 1; $i <= 48; $i++) { $prop = array('networkID' => $network->id, 'mac_address' => '', 'conn_device' => 0, 'vlan' => 0, 'type' => 1); $macs = new Model_Network_Mac($prop); $macs->save(); array_push($macc, $macs->id); } return array('id' => $sw->id, 'macs' => $macc); }