123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446 |
- <?php
- namespace StatsBundle\Controller;
- use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
- use StatsBundle\Services\DeviceManager;
- use Symfony\Bundle\FrameworkBundle\Controller\Controller;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\Response;
- class StatsController extends Controller
- {
- /**
- * @Route("/admin/stats/statsdevice/update", name="stats_update_devices")
- *
- * @return string
- */
- public function updateDevicesAction()
- {
- /* @var $statsDeviceManager DeviceManager */
- $statsDeviceManager = $this->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("<pre>");
- 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,
- ));
- }
- }
|