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 | } |