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 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 28
DockerService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
42
0.00% covered (danger)
0.00%
0 / 28
 configs
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 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
2
0.00% covered (danger)
0.00%
0 / 6
 getLogsResumeAttribute
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 17
 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;
6use Illuminate\Support\Facades\DB;
7use Illuminate\Support\Facades\Log;
8use Qmp\Laravel\DockerScale\Models\DockerScalerConfig;
9
10class DockerService extends Model
11{
12    protected $connection = 'dockerScale';
13    protected $table = 'docker_services';
14    
15    protected $fillable = ['service_id', 'name', 'mode', 'current_replicas', 'total_replicas', 'image', 'ports', ];
16
17    public function configs()
18    {
19        return $this->hasMany(DockerScalerConfig::class, 'service_id');
20    }
21
22    public function getTasksAttribute()
23    {
24        $tasks = DockerTask::where('service', $this->name)->get();
25        $tasks->eachAppend('stats_avg');
26
27        return $tasks;
28    }
29
30    public function getTasksResumeAttribute()
31    {
32        $tasks = $this->tasks;
33        return collect([
34            'count' => $tasks->count(),
35            'cpu' => $tasks->average('stats_avg.cpu'),
36            'memory' => $tasks->average('stats_avg.memory'),
37            'pids' => $tasks->average('stats_avg.pids')
38        ]);
39    }
40
41    public function getLogsResumeAttribute()
42    {
43        $ts = (new \DateTime('-5 minutes'))->getTimestamp();
44        $serviceName = $this->service_name;
45        $count = null;
46        $time = null;
47        if (!empty($serviceName)) {
48            $count = HttpLog::select(DB::raw('count(0) as num'))
49                ->where('service', $serviceName)
50                ->where('ts', '>=', $ts)
51                ->groupBy('ts')
52                ->get()
53                ->average('num');
54            $count = number_format($count, 1);
55
56            $time = HttpLog::where('service', $serviceName)
57                ->where('ts', '>=', $ts)
58                ->avg('time');
59            $time = number_format(($time / 1000000), 3);
60        }
61
62        return collect(compact('count', 'time'));
63    }
64
65    /**
66     * Prepare a date for array / JSON serialization.
67     *
68     * @param  \DateTimeInterface  $date
69     * @return string
70     */
71    protected function serializeDate(\DateTimeInterface $date)
72    {
73        return $date->format('Y-m-d H:i:s');
74    }
75
76
77
78}