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 / 7
CRAP
0.00% covered (danger)
0.00%
0 / 25
ConfigController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 7
90
0.00% covered (danger)
0.00%
0 / 25
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 index
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 store
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 4
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 validateData
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 13
1<?php
2
3namespace Qmp\Laravel\DockerScale\Controllers;
4
5use App\Http\Controllers\Controller;
6use Illuminate\Http\Response;
7use Illuminate\Http\Request;
8use Illuminate\Support\Facades\Log;
9use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
10use Qmp\Laravel\DockerScale\Models\DockerScalerConfig;
11use Illuminate\Validation\Rule;
12
13class ConfigController extends AbstractMicroServiceController
14{
15    public function __construct(Request $request)
16    {
17        parent::__construct($request);
18    }
19
20    /**
21     * Display a listing of the resource.
22     *
23     * @return \Illuminate\Http\Response
24     */
25    public function index()
26    {
27        return DockerScalerConfig::orderBy('service_id')->get();
28    }
29
30    /**
31     * Store a newly created resource in storage.
32     *
33     * @param  \Illuminate\Http\Request  $request
34     * @return \Illuminate\Http\Response
35     */
36    public function store(Request $request)
37    {
38        $validatedData = $this->validateData($request);
39
40        return DockerScalerConfig::create($validatedData);
41    }
42
43    /**
44     * Display the specified resource.
45     *
46     * @return \Illuminate\Http\Response
47     */
48    public function show($configId)
49    {
50        return DockerScalerConfig::findOrFail($configId);
51    }
52
53    /**
54     * Update the specified resource in storage.
55     *
56     * @param  \Illuminate\Http\Request  $request
57     * @param  \Qmp\Laravel\DockerScale\Models\DockerScalerConfig  $config
58     * @return \Illuminate\Http\Response
59     */
60    public function update(Request $request, $configId)
61    {
62        $validatedData = $this->validateData($request, $configId);
63        $config = DockerScalerConfig::findOrFail($configId);
64
65        $result = $config->update($validatedData);
66
67        return response()->json(['status' => $result ? 'ok' : 'ko']);
68    }
69
70    /**
71     * Remove the specified resource from storage.
72     *
73     * @param  \Qmp\Laravel\DockerScale\Models\DockerScalerConfig  $config
74     * @return \Illuminate\Http\Response
75     */
76    public function destroy($configId)
77    {
78        DockerScalerConfig::find($configId)->delete();
79    }
80
81    protected function validateData(Request $request, $id = null)
82    {
83        $rules =[
84            'service_id' => 'required|exists:dockerScale.docker_services,id',
85            'type' => [
86                'required',
87                Rule::in([DockerScalerConfig::TYPE_MEMORY, DockerScalerConfig::TYPE_CPU, DockerScalerConfig::TYPE_LOAD_AVERAGE, DockerScalerConfig::TYPE_REQUEST_TIME, DockerScalerConfig::TYPE_REQUEST_COUNT, ]),
88            ],
89            'min_replicas' => 'required|integer',
90            'max_replicas' => 'nullable|integer',
91            'alert_down' => 'required|numeric',
92            'alert_up' => 'required|numeric',
93            'active' => 'sometimes|nullable|boolean',
94        ];
95
96        if ($id != null) {
97            $rules['id'] = [
98                'required',
99                Rule::in([$id])
100            ];
101        }
102
103        return $request->validate($rules);
104    }
105}