mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Fix Service Templates Dynamic (#12626)
* Fix Service Templates Dynamic Remove dynamic groups type, it did not work. Rename and simplify field names. (fixing an issue with the builder where the rules field should be named rules) * update schema def * wrong method name in migration * fix rules builder * corerct call to apply * sqlite can't drop columns * correct column rename order on down. * fix sqlite again * fix whitespace
This commit is contained in:
@@ -69,11 +69,9 @@ class ServiceTemplateController extends Controller
|
||||
'groups.*' => 'integer',
|
||||
'devices' => 'array',
|
||||
'devices.*' => 'integer',
|
||||
'type' => 'string',
|
||||
'dtype' => 'required|in:dynamic,static',
|
||||
'dgtype' => 'required|in:dynamic,static',
|
||||
'drules' => 'json|required_if:dtype,dynamic',
|
||||
'dgrules' => 'json|required_if:dgtype,dynamic',
|
||||
'check' => 'string',
|
||||
'type' => 'required|in:dynamic,static',
|
||||
'rules' => 'json|required_if:type,dynamic',
|
||||
'param' => 'nullable|string',
|
||||
'ip' => 'nullable|string',
|
||||
'desc' => 'nullable|string',
|
||||
@@ -87,11 +85,9 @@ class ServiceTemplateController extends Controller
|
||||
$request->only(
|
||||
[
|
||||
'name',
|
||||
'check',
|
||||
'type',
|
||||
'dtype',
|
||||
'dgtype',
|
||||
'drules',
|
||||
'dgrules',
|
||||
'rules',
|
||||
'param',
|
||||
'ip',
|
||||
'desc',
|
||||
@@ -101,16 +97,14 @@ class ServiceTemplateController extends Controller
|
||||
]
|
||||
)
|
||||
);
|
||||
$template->drules = json_decode($request->drules);
|
||||
$template->dgrules = json_decode($request->dgrules);
|
||||
$template->rules = json_decode($request->rules);
|
||||
$template->save();
|
||||
|
||||
if ($request->dtype == 'static') {
|
||||
if ($request->type == 'static') {
|
||||
$template->devices()->sync($request->devices);
|
||||
}
|
||||
if ($request->dgtype == 'static') {
|
||||
$template->groups()->sync($request->groups);
|
||||
}
|
||||
|
||||
$template->groups()->sync($request->groups);
|
||||
Toastr::success(__('Service Template :name created', ['name' => $template->name]));
|
||||
|
||||
return redirect()->route('services.templates.index');
|
||||
@@ -165,15 +159,13 @@ class ServiceTemplateController extends Controller
|
||||
}
|
||||
),
|
||||
],
|
||||
'dtype' => 'required|in:dynamic,static',
|
||||
'drules' => 'json|required_if:dtype,dynamic',
|
||||
'type' => 'required|in:dynamic,static',
|
||||
'rules' => 'json|required_if:type,dynamic',
|
||||
'devices' => 'array',
|
||||
'devices.*' => 'integer',
|
||||
'dgtype' => 'required|in:dynamic,static',
|
||||
'dgrules' => 'json|required_if:dgtype,dynamic',
|
||||
'groups' => 'array',
|
||||
'groups.*' => 'integer',
|
||||
'type' => 'string',
|
||||
'check' => 'string',
|
||||
'param' => 'nullable|string',
|
||||
'ip' => 'nullable|string',
|
||||
'desc' => 'nullable|string',
|
||||
@@ -187,11 +179,9 @@ class ServiceTemplateController extends Controller
|
||||
$request->only(
|
||||
[
|
||||
'name',
|
||||
'check',
|
||||
'type',
|
||||
'dtype',
|
||||
'dgtype',
|
||||
'drules',
|
||||
'dgrules',
|
||||
'rules',
|
||||
'param',
|
||||
'ip',
|
||||
'desc',
|
||||
@@ -203,27 +193,22 @@ class ServiceTemplateController extends Controller
|
||||
);
|
||||
|
||||
$devices_updated = false;
|
||||
if ($template->dtype == 'static') {
|
||||
if ($template->type == 'static') {
|
||||
// sync device_ids from input
|
||||
$updated = $template->devices()->sync($request->get('devices', []));
|
||||
// check for attached/detached/updated
|
||||
$devices_updated = array_sum(array_map(function ($device_ids) {
|
||||
return count($device_ids);
|
||||
}, $updated)) > 0;
|
||||
} else {
|
||||
$template->drules = json_decode($request->drules);
|
||||
}
|
||||
|
||||
$device_groups_updated = false;
|
||||
if ($template->dgtype == 'static') {
|
||||
} elseif ($template->type == 'dynamic') {
|
||||
$template->rules = json_decode($request->rules);
|
||||
} elseif ($template->type == 'groups') {
|
||||
// sync device_group_ids from input
|
||||
$updated = $template->groups()->sync($request->get('groups', []));
|
||||
// check for attached/detached/updated
|
||||
$device_groups_updated = array_sum(array_map(function ($device_group_ids) {
|
||||
return count($device_group_ids);
|
||||
}, $updated)) > 0;
|
||||
} else {
|
||||
$template->dgrules = json_decode($request->dgrules);
|
||||
}
|
||||
|
||||
if ($template->isDirty() || $devices_updated || $device_groups_updated) {
|
||||
@@ -237,8 +222,7 @@ class ServiceTemplateController extends Controller
|
||||
}
|
||||
} catch (\Illuminate\Database\QueryException $e) {
|
||||
return redirect()->back()->withInput()->withErrors([
|
||||
'drules' => __('Rules resulted in invalid query: ') . $e->getMessage(),
|
||||
'dgrules' => __('Rules resulted in invalid query: ') . $e->getMessage(),
|
||||
'rules' => __('Rules resulted in invalid query: ') . $e->getMessage(),
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
@@ -264,7 +248,7 @@ class ServiceTemplateController extends Controller
|
||||
],
|
||||
[
|
||||
'service_name' => $template->name,
|
||||
'service_type' => $template->type,
|
||||
'service_type' => $template->check,
|
||||
'service_template_id' => $template->id,
|
||||
'service_param' => $template->param,
|
||||
'service_ip' => $template->ip,
|
||||
@@ -295,7 +279,7 @@ class ServiceTemplateController extends Controller
|
||||
],
|
||||
[
|
||||
'service_name' => $template->name,
|
||||
'service_type' => $template->type,
|
||||
'service_type' => $template->check,
|
||||
'service_template_id' => $template->id,
|
||||
'service_param' => $template->param,
|
||||
'service_ip' => $template->ip,
|
||||
@@ -318,7 +302,7 @@ class ServiceTemplateController extends Controller
|
||||
public function applyAll()
|
||||
{
|
||||
foreach (ServiceTemplate::all() as $template) {
|
||||
ServiceTemplateController::apply($template);
|
||||
$this->apply($template);
|
||||
}
|
||||
$msg = __('All Service Templates have been applied');
|
||||
|
||||
|
Reference in New Issue
Block a user