Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 19
DockerNode
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 19
 getTasksAttribute
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 3
 getTasksResumeAttribute
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 15
 serializeDate
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
1<?php
2
3namespace Qmp\Laravel\DockerScale\Models;
4
5use Illuminate\Database\Eloquent\Model;
6
7class 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}