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,
        ));
    }

}