Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 17 |
DockerNodes | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 17 |
run | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 17 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\DockerScale\Retriever\Providers; |
4 | |
5 | use Qmp\Laravel\DockerScale\Models\DockerNode; |
6 | |
7 | class DockerNodes extends DockerAbstract |
8 | { |
9 | protected $model = DockerNode::class; |
10 | |
11 | protected $matchUpdate = ['hostname']; |
12 | |
13 | protected $cmd = 'docker node ls --format "{{.ID}}|{{.Hostname}}|{{.Status}}|{{.Availability}}|{{.ManagerStatus}}|{{.TLSStatus}}|{{.EngineVersion}}"'; |
14 | protected $eachCmd = 'docker node inspect --format "{{.ID}}|{{.Description.Resources.NanoCPUs}}|{{.Description.Resources.MemoryBytes}}|{{.Status.Addr}}|{{.UpdatedAt}}" '; |
15 | |
16 | public function run() |
17 | { |
18 | $output = $this->exec($this->cmd); |
19 | return array_map(function($item) { |
20 | $nodes = $this->exec($this->eachCmd . $item[0]); |
21 | $node = array_shift($nodes); |
22 | |
23 | $result = [ |
24 | 'docker_id' => $item[0], |
25 | 'hostname' => $item[1], |
26 | 'status' => $item[2], |
27 | 'avaibility' => $item[3], |
28 | 'manager_status' => $item[4], |
29 | 'tls_status' => $item[5], |
30 | 'engine_version' => $item[6], |
31 | 'cpu' => number_format($node[1] / 1000000000, 2), |
32 | 'memory' => number_format($node[2] / 1024 / 1024 / 1024, 3), // GiB |
33 | 'ip' => $node[3], |
34 | 'last_update' => $node[4] |
35 | ]; |
36 | |
37 | return $this->update($result); |
38 | }, $output); |
39 | } |
40 | } |