} }); // // URL: /api/v1/colorcode/:name // Method: PUT // Params: // Required: Name // Optional: DefaultNote // Returns: record as created // $app->put('/colorcode/:colorname', function ($colorname) use($app) { $cc = new ColorCoding(); foreach ($app->request->put() as $prop => $val) { $cc->{$prop} = $val; } if (!$cc->CreateCode()) { $response['error'] = true; $response['errorcode'] = 403; $response['message'] = __("Error creating new color."); } else { $response['error'] = false; $response['errorcode'] = 200; $response['message'] = __("New color created successfully."); $response['colorcode'][$cc->ColorID] = $cc; } echoResponse(200, $response); }); // // URL: /api/v1/device/:devicelabel // Method: PUT // Params: deviceid (passed in URL)
function ImportTemplate($file) { $result = array(); $result["status"] = ""; $result["log"] = array(); $ierror = 0; //validate xml template file with openDCIMdevicetemplate.xsd libxml_use_internal_errors(true); $xml = new XMLReader(); $xml->open($file); $resp = $xml->setSchema("openDCIMdevicetemplate.xsd"); while (@$xml->read()) { } // empty loop $errors = libxml_get_errors(); if (count($errors) > 0) { $result["status"] = __("No valid file"); foreach ($errors as $error) { $result["log"][$ierror++] = $error->message; } return $result; } libxml_clear_errors(); $xml->close(); //read xml template file $xmltemplate = simplexml_load_file($file); //manufacturer $manufacturer = new Manufacturer(); $manufacturer->Name = transform($xmltemplate->ManufacturerName); if (!$manufacturer->GetManufacturerByName()) { //New Manufacturer $manufacturer->CreateManufacturer(); } $template = new DeviceTemplate(); $template->ManufacturerID = $manufacturer->ManufacturerID; $template->Model = transform($xmltemplate->TemplateReg->Model); $template->Height = $xmltemplate->TemplateReg->Height; $template->Weight = $xmltemplate->TemplateReg->Weight; $template->Wattage = $xmltemplate->TemplateReg->Wattage; $template->DeviceType = $xmltemplate->TemplateReg->DeviceType; $template->PSCount = $xmltemplate->TemplateReg->PSCount; $template->NumPorts = $xmltemplate->TemplateReg->NumPorts; $template->Notes = trim($xmltemplate->TemplateReg->Notes); $template->Notes = $template->Notes == "<br>" ? "" : $template->Notes; $template->FrontPictureFile = $xmltemplate->TemplateReg->FrontPictureFile; $template->RearPictureFile = $xmltemplate->TemplateReg->RearPictureFile; $template->SNMPVersion = $xmltemplate->TemplateReg->SNMPVersion; $template->ChassisSlots = $template->DeviceType == "Chassis" ? $xmltemplate->TemplateReg->ChassisSlots : 0; $template->RearChassisSlots = $template->DeviceType == "Chassis" ? $xmltemplate->TemplateReg->RearChassisSlots : 0; //Check if picture files exist if ($template->FrontPictureFile != "" && file_exists("pictures/" . $template->FrontPictureFile)) { $result["status"] = __("Import Error"); $result["log"][0] = __("Front picture file already exists"); return $result; } if ($template->RearPictureFile != "" && file_exists("pictures/" . $template->RearPictureFile)) { $result["status"] = __("Import Error"); $result["log"][0] = __("Rear picture file already exists"); return $result; } //create the template if (!$template->CreateTemplate()) { $result["status"] = __("Import Error"); $result["log"][0] = __("An error has occurred creating the template.<br>Possibly there is already a template of the same manufacturer and model"); return $result; } //get template to this object $this->TemplateID = $template->TemplateID; $this->GetTemplateByID(); //slots foreach ($xmltemplate->SlotReg as $xmlslot) { $slot = new Slot(); $slot->TemplateID = $this->TemplateID; $slot->Position = intval($xmlslot->Position); $slot->BackSide = intval($xmlslot->BackSide); $slot->X = intval($xmlslot->X); $slot->Y = intval($xmlslot->Y); $slot->W = intval($xmlslot->W); $slot->H = intval($xmlslot->H); if ($slot->Position <= $this->ChassisSlots && !$slot->BackSide || $slot->Position <= $this->RearChassisSlots && $slot->BackSide) { if (!$slot->CreateSlot()) { $result["status"] = __("Import Warning"); $result["log"][$ierror++] = sprintf(__("An error has occurred creating the slot %s"), $slot->Position . "-" . $slot->BackSide ? __("Rear") : __("Front")); } } else { $result["status"] = __("Import Warning"); $result["log"][$ierror++] = sprintf(__("Ignored slot %s"), $slot->Position . "-" . $slot->BackSide ? __("Rear") : __("Front")); } } //ports foreach ($xmltemplate->PortReg as $xmlport) { //media type $mt = new MediaTypes(); $mt->MediaType = transform($xmlport->PortMedia); if (!$mt->GetTypeByName()) { //New media type $mt->CreateType(); } //color $cc = new ColorCoding(); $cc->Name = transform($xmlport->PortColor); if (!$cc->GetCodeByName()) { //New color $cc->CreateCode(); } $tport = new TemplatePorts(); $tport->TemplateID = $this->TemplateID; $tport->PortNumber = intval($xmlport->PortNumber); $tport->Label = $xmlport->Label; $tport->MediaID = $mt->MediaID; $tport->ColorID = $cc->ColorID; $tport->PortNotes = $xmlport->PortNotes; if ($tport->PortNumber <= $this->NumPorts) { if (!$tport->CreatePort()) { $result["status"] = __("Import Warning"); $result["log"][$ierror++] = sprintf(__("An error has occurred creating the port %s"), $tport->PortNumber); } } else { $result["status"] = __("Import Warning"); $result["log"][$ierror++] = sprintf(__("Ignored port %s"), $tport->PortNumber); } } //files if ($this->FrontPictureFile != "") { $im = base64_decode($xmltemplate->FrontPicture); file_put_contents("pictures/" . $this->FrontPictureFile, $im); } if ($this->RearPictureFile != "" && $this->RearPictureFile != $this->FrontPictureFile) { $im = base64_decode($xmltemplate->RearPicture); file_put_contents("pictures/" . $this->RearPictureFile, $im); } return $result; }