| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 3 | CRAP |  | 0.00% | 0 / 19 | 
| DockerNode |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 3 | 42 |  | 0.00% | 0 / 19 | 
| getTasksAttribute |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 3 | |||
| getTasksResumeAttribute |  | 0.00% | 0 / 1 | 20 |  | 0.00% | 0 / 15 | |||
| serializeDate |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1 | |||
| 1 | <?php | 
| 2 | |
| 3 | namespace Qmp\Laravel\DockerScale\Models; | 
| 4 | |
| 5 | use Illuminate\Database\Eloquent\Model; | 
| 6 | |
| 7 | class DockerNode extends Model | 
| 8 | { | 
| 9 | protected $connection = 'dockerScale'; | 
| 10 | protected $table = 'docker_nodes'; | 
| 11 | |
| 12 | protected $fillable = ['docker_id', 'hostname', 'status', 'avaibility', 'manager_status', 'tls_status', 'engine_version', 'cpu', 'memory', 'ip', 'last_update', ]; | 
| 13 | |
| 14 | |
| 15 | public function getTasksAttribute() | 
| 16 | { | 
| 17 | $tasks = DockerTask::where('node', $this->hostname)->get(); | 
| 18 | $tasks->eachAppend('stats_avg'); | 
| 19 | |
| 20 | return $tasks; | 
| 21 | } | 
| 22 | |
| 23 | public function getTasksResumeAttribute() | 
| 24 | { | 
| 25 | $tasks = $this->tasks; | 
| 26 | $tasksByService = []; | 
| 27 | foreach ($tasks as $task) { | 
| 28 | if (!isset($tasksByService[$task->service])) { | 
| 29 | $tasksByService[$task->service] = collect(); | 
| 30 | } | 
| 31 | |
| 32 | $tasksByService[$task->service]->push($task); | 
| 33 | } | 
| 34 | |
| 35 | $tasksResume = collect(); | 
| 36 | foreach ($tasksByService as $service => $tasks) { | 
| 37 | $tasksResume->push(collect([ | 
| 38 | 'service' => $service, | 
| 39 | 'count' => $tasks->count(), | 
| 40 | 'cpu' => $tasks->average('stats_avg.cpu'), | 
| 41 | 'memory' => $tasks->average('stats_avg.memory'), | 
| 42 | 'pids' => $tasks->average('stats_avg.pids') | 
| 43 | ])); | 
| 44 | } | 
| 45 | |
| 46 | return $tasksResume; | 
| 47 | } | 
| 48 | |
| 49 | /** | 
| 50 | * Prepare a date for array / JSON serialization. | 
| 51 | * | 
| 52 | * @param \DateTimeInterface $date | 
| 53 | * @return string | 
| 54 | */ | 
| 55 | protected function serializeDate(\DateTimeInterface $date) | 
| 56 | { | 
| 57 | return $date->format('Y-m-d H:i:s'); | 
| 58 | } | 
| 59 | |
| 60 | |
| 61 | } |