-
Notifications
You must be signed in to change notification settings - Fork 103
/
HealthCheckController.php
105 lines (90 loc) · 3.21 KB
/
HealthCheckController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
namespace Liip\MonitorBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Liip\MonitorBundle\Check\Runner;
use Liip\MonitorBundle\Helper\PathHelper;
use Liip\MonitorBundle\Check\CheckChain;
class HealthCheckController
{
protected $healthCheckChain;
protected $runner;
protected $pathHelper;
/**
* @param \Liip\MonitorBundle\Check\CheckChain $healthCheckChain
* @param \Liip\MonitorBundle\Check\Runner $runner
* @param \Liip\MonitorBundle\Helper\PathHelper $pathHelper
*/
public function __construct(CheckChain $healthCheckChain, Runner $runner, PathHelper $pathHelper)
{
$this->healthCheckChain = $healthCheckChain;
$this->runner = $runner;
$this->pathHelper = $pathHelper;
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
public function indexAction()
{
$urls = $this->pathHelper->getRoutesJs(array(
'liip_monitor_run_all_checks' => array(),
'liip_monitor_run_single_check' => array('checkId' => 'replaceme')
));
$css = $this->pathHelper->getStyleTags(array(
'bundles/liipmonitor/css/bootstrap/css/bootstrap.min.css',
'bundles/liipmonitor/css/style.css'
));
$javascript = $this->pathHelper->getScriptTags(array(
'bundles/liipmonitor/javascript/jquery-1.7.1.min.js',
'bundles/liipmonitor/javascript/ember-0.9.5.min.js',
'bundles/liipmonitor/javascript/app.js'
));
// this is a hack to make the bundle template agnostic.
// URL generation for Assets and Routes is still handled by the framework.
ob_start();
include __DIR__ . '/../Resources/views/health/index.html.php';
$content = ob_get_clean();
return new Response($content, 200);
}
/**
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function listAction(Request $request)
{
return $this->getJsonResponse($this->healthCheckChain->getAvailableChecks());
}
/**
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function runAllChecksAction(Request $request)
{
$results = $this->runner->runAllChecks();
$data = array();
foreach ($results as $id => $result) {
$tmp = $result->toArray();
$tmp['service_id'] = $id;
$data[] = $tmp;
}
return $this->getJsonResponse(array('checks' => $data));
}
/**
* @param string $checkId
* @return \Symfony\Component\HttpFoundation\Response
*/
public function runSingleCheckAction($checkId)
{
$result = $this->runner->runCheckById($checkId)->toArray();
$result['service_id'] = $checkId;
return $this->getJsonResponse($result);
}
/**
* @param $data
* @return \Symfony\Component\HttpFoundation\Response
*/
protected function getJsonResponse($data)
{
return new Response(json_encode($data), 200, array('Content-Type' => 'application/json'));
}
}