get('stats.device.manager'); $statsDeviceManager->getDevices(); return $this->redirect($this->generateUrl('admin_stats_device_list')); } /** * @Route("/admin/stats/olt/stats/graph", name="stats_graph") * * @return string */ public function getStatsGraphAction(Request $request) { $grafana_url = $this->getParameter('grafana_url'); // Puertos pon $pons = array(); for ($x = 1; $x <= 8; $x++) { for ($y = 1; $y <= 8; $y++) { $index = "{$x}.{$y}"; $pons[$index] = "PON PORT $index"; } } for ($x = 11; $x <= 18; $x++) { for ($y = 1; $y <= 8; $y++) { $index = "{$x}.{$y}"; $pons[$index] = "PON PORT {$index}"; } } $panelIds = array(6, 4, 5, 1, 2, 3,); $pon = '1.1'; if ($request->isMethod('POST')) { $pon = $request->request->get('pon', $pon); } $urls = array('olt-total-rate?orgId=1&panelId=1',); foreach ($panelIds as $panelId) { $urls[] = "olt-pon-ports?orgId=1&panelId={$panelId}&var-ponport={$pon}"; } if ($request->isMethod('GET')) { return $this->render('StatsBundle:Stats:graph.html.twig', array( 'grafana_url' => $grafana_url, 'urls' => $urls, 'pons' => $pons, )); } return new JsonResponse(array( 'urls' => $urls, )); } /** * @Route("/admin/stats/onu/stats/graph", name="onu_stats_graph") * * @return string */ public function getONUStatsGraphAction(Request $request) { $grafana_url = $this->getParameter('grafana_url'); $onus = $this->get('webservice')->getData('onu', array( 'id' => $request->get('id') )); $urls = array(); $serialNumber = 'fhtt000753b0'; if (isset($onus[0]) && isset($onus[0]['ponSerialNumber'])) { $serialNumber = $onus[0]['ponSerialNumber']; } $panelIds = array(1, 2, 3, 4, 5); foreach ($panelIds as $panelId) { $urls[] = "onu?orgId=1&var-serialnumber={$serialNumber}&panelId={$panelId}"; } if ($request->isMethod('GET')) { return $this->render('StatsBundle:Stats:onu_graph.html.twig', array( 'grafana_url' => $grafana_url, 'urls' => $urls, 'serial_number' => $serialNumber, )); } return new JsonResponse(array( 'urls' => $urls, )); } /** * @Route("/admin/stats/onu/stats/map", name="onu_stats_map") * * @return string */ public function showMapAction(Request $request) { $map = array(); $map['zoom'] = 12; $map['lng'] = -60.065884467624294; $map['lat'] = -33.902661208376706; $em = $this->get('doctrine')->getManager(); $adminPool = $this->get('sonata.admin.pool'); $api = $this->get('geoserver.api'); $tenancyId = $this->get("base_tenancy.tenancy_service")->getTenancyIdCurrent(); $deviceServerId = $this->getParameter('device_server_base'); $gsHost = $this->getParameter('geoserver_host'); $gsPort = $this->getParameter('geoserver_port'); $workspace = "deviceServer_{$deviceServerId}"; $layer = "onu_stats_tenancy_{$tenancyId}"; $data = $api->getLayerData($workspace, $layer); $setLatLng = $setZoom = false; if(!empty($data)) { if(isset($data['featureType']['latLonBoundingBox'])) { $setLatLng = $setZoom = true; $srs = $data['featureType']['latLonBoundingBox']; } elseif(isset($data['featureType']['nativeBoundingBox'])) { $setLatLng = $setZoom = true; $srs = $data['featureType']['nativeBoundingBox']; } } else { $translator = $this->get('translator'); $flashbag = $this->get('session')->getFlashBag(); $flashbag->add("error", $translator->trans("msg_no_exist_map",array(),"StatsBundle")); return $this->redirect($this->generateUrl('admin_stats_onu_list')); } if($setLatLng) { $lng = $srs['minx'] + ($srs['maxx'] - $srs['minx']) / 2; $lat = $srs['miny'] + ($srs['maxy'] - $srs['miny']) / 2; } if($setZoom) { $lngDiff = $srs['maxx'] - $srs['minx']; $latDiff = $srs['maxy'] - $srs['miny']; $maxDiff = ($lngDiff > $latDiff) ? $lngDiff : $latDiff; if ($maxDiff < 360 / pow(2, 20)) { $zoom = 21; } else { $zoom = (-1*( (log($maxDiff)/log(2)) - (log(360)/log(2)))) + 1; if ($zoom < 1) $zoom = 1; } } $map = array('lat' => $lat, 'lng' => $lng, 'zoom' => $zoom); return $this->render('StatsBundle:Stats:onu_map.html.twig', array( 'base_template' => $adminPool->getTemplate('layout'), 'admin_pool' => $adminPool, 'admin' => $adminPool->getAdminByClass("StatsBundle\Entity\Onu"), 'map' => $map, 'ws' => $workspace, 'layer' => $layer, 'gsHost'=> $gsHost, 'gsPort'=> $gsPort )); } /** * @Route("/admin/stats/onu/stats/api_feature_json", name="api_feature_json") * * @return string */ public function apiFeatureJsonAction(Request $request) { $params = $request->query->all(); $data = explode(":",$params['LAYERS']); $workspace = $data[0]; $api = $this->get('geoserver.api'); $return = $api->getFeature($workspace, $params); $data = json_decode($return,true); if(isset($data['features']) && isset($data['features'][0])) { $return = json_encode($data['features'][0]['properties']); } else { $return = json_encode(array()); } $response = new Response( $return, Response::HTTP_OK, array('content-type' => 'application/json') ); return $response; } /** * @Route("/admin/stats/deviceserver/getroutes", name="deviceserver_get_routes") * * @return string */ public function deviceServerGetRoutesAction() { $webservice = $this->get("webservice"); $test = $webservice->makeGetRequest("http://200.50.168.118/base/app_dev.php/api/routes"); $response = new Response( $test, Response::HTTP_OK, array('content-type' => 'application/json') ); return $response; print_r("
"); var_dump($test); //$resource = $request->query->get('resource'); //$url = $this->getParameter('url_ftth'); //print_r($url); die; } /** * @Route("/admin/stats/onu/grafana", name="grafana_onu") * * @return string */ public function grafanaOnuAction(Request $request) { $grafana_url = $this->getParameter('grafana_url'); $ponSerialNumber = strtolower($request->get('ponSerialNumber')); $panelIds = array(6, 1, 2, 3, 4, 5); foreach ($panelIds as $panelId) { $urls[] = "onu?orgId=1&var-serialnumber={$ponSerialNumber}&panelId={$panelId}&theme=light"; } if ($request->isMethod('GET')) { return $this->render('StatsBundle:Stats:onu_graph.html.twig', array( 'grafana_url' => $grafana_url, 'urls' => $urls, 'serial_number' => $ponSerialNumber, )); } return new JsonResponse(array( 'urls' => $urls, )); } /** * @Route("/admin/stats/ponport/grafana", name="grafana_ponport") * * @return string */ public function grafanaPonPortAction(Request $request) { $grafana_url = $this->getParameter('grafana_url'); $em = $this->get("doctrine.orm.entity_manager"); $ponPortId = $request->get('id'); $ponPort = $em->getRepository("StatsBundle:PonPort")->findOneById($ponPortId); $oltDeviceId = $ponPort->getOltDeviceId(); $deviceServerId = $ponPort->getDeviceServer()->getId(); $panelIds = array(1, 2, 3, 4); $data = explode("/", $ponPort->getPonPort()); if(count($data) == 3) { $board = $data[0]; $card = $data[1]; $slot = $data[2]; foreach ($panelIds as $panelId) { $urls[] = "olt-pon-ports-huawei?orgId=1&var-olt={$oltDeviceId}&var-server={$deviceServerId}&var-board={$board}&var-card={$card}&var-slot={$slot}&panelId={$panelId}&theme=light"; } } else { $card = $data[0]; $slot = $data[1]; foreach ($panelIds as $panelId) { $urls[] = "olt-pon-ports?orgId=1&var-olt={$oltDeviceId}&var-server={$deviceServerId}&var-card={$card}&var-slot={$slot}&panelId={$panelId}&theme=light"; } } if ($request->isMethod('GET')) { return $this->render('StatsBundle:Stats:ponport_graph.html.twig', array( 'grafana_url' => $grafana_url, 'urls' => $urls )); } return new JsonResponse(array( 'urls' => $urls, )); } /** * @Route("/admin/stats/ponport/stats/map", name="ponport_stats_map") * * @return string */ public function showPonPortMapAction(Request $request) { $map = array(); $map['zoom'] = 12; $map['lng'] = -60.065884467624294; $map['lat'] = -33.902661208376706; $ponPortId = $request->get('id'); $em = $this->get('doctrine')->getManager(); $ponPort = $em->getRepository("StatsBundle:PonPort")->findOneById($ponPortId); $oltDeviceId = $ponPort->getOltDeviceId(); $deviceServerId = $ponPort->getDeviceServer()->getId(); $tenancyId = $ponPort->getTenancyId(); $data = explode("/", $ponPort->getPonPort()); $card = $data[0]; $slot = $data[1]; $adminPool = $this->get('sonata.admin.pool'); $api = $this->get('geoserver.api'); $gsHost = $this->getParameter('geoserver_host'); $gsPort = $this->getParameter('geoserver_port'); $workspace = "deviceServer_{$deviceServerId}"; $layer = "ponport_stats_t_{$tenancyId}_o_{$oltDeviceId}_s_{$deviceServerId}_c_{$card}_s_{$slot}"; $data = $api->getLayerData($workspace, $layer); $setLatLng = $setZoom = false; if(!empty($data)) { if(isset($data['featureType']['latLonBoundingBox'])) { $setLatLng = $setZoom = true; $srs = $data['featureType']['latLonBoundingBox']; } elseif(isset($data['featureType']['nativeBoundingBox'])) { $setLatLng = $setZoom = true; $srs = $data['featureType']['nativeBoundingBox']; } } else { $translator = $this->get('translator'); $flashbag = $this->get('session')->getFlashBag(); $flashbag->add("error", $translator->trans("msg_no_exist_map",array(),"StatsBundle")); return $this->redirect($this->generateUrl('admin_stats_ponport_list')); } if($setLatLng) { $lng = $srs['minx'] + ($srs['maxx'] - $srs['minx']) / 2; $lat = $srs['miny'] + ($srs['maxy'] - $srs['miny']) / 2; } if($setZoom) { $lngDiff = $srs['maxx'] - $srs['minx']; $latDiff = $srs['maxy'] - $srs['miny']; $maxDiff = ($lngDiff > $latDiff) ? $lngDiff : $latDiff; if ($maxDiff < 360 / pow(2, 20)) { $zoom = 21; } else { $zoom = (-1*( (log($maxDiff)/log(2)) - (log(360)/log(2)))) + 1; if ($zoom < 1) $zoom = 1; } } $map = array('lat' => $lat, 'lng' => $lng, 'zoom' => $zoom); return $this->render('StatsBundle:Stats:ponport_map.html.twig', array( 'base_template' => $adminPool->getTemplate('layout'), 'admin_pool' => $adminPool, 'admin' => $adminPool->getAdminByClass("StatsBundle\Entity\PonPort"), 'map' => $map, 'layer' => $layer, 'ponPort' => $ponPort, 'ws' => $workspace, 'gsHost'=> $gsHost, 'gsPort'=> $gsPort )); } /** * @Route("/admin/stats/ponport/grafana", name="grafana_ponport") * * @return string */ public function grafanaInterfaceAction(Request $request) { $grafana_url = $this->getParameter('grafana_url'); $em = $this->get("doctrine.orm.entity_manager"); $interfaceId = $request->get('id'); $interface = $em->getRepository("StatsBundle:CmtsInterface")->findOneById($interfaceId); $cmtsDeviceId = $interface->getCmtsDeviceId(); $deviceServerId = $interface->getDeviceServer()->getId(); $index = $interface->getIndex(); $panelIds = array(1, 2, 3); foreach ($panelIds as $panelId) { $urls[] = "cmts-interface?orgId=1&var-cmts={$cmtsDeviceId}&var-server={$deviceServerId}&var-interface={$index}&panelId={$panelId}&theme=light"; } if ($request->isMethod('GET')) { return $this->render('StatsBundle:Stats:ponport_graph.html.twig', array( 'grafana_url' => $grafana_url, 'urls' => $urls )); } return new JsonResponse(array( 'urls' => $urls, )); } }