From 1be8de0b2441a52040cea0cd83d5603f2a19f6fc Mon Sep 17 00:00:00 2001 From: Peca Nesovanovic <59750439+Npeca75@users.noreply.github.com> Date: Sun, 7 Aug 2022 21:50:46 +0200 Subject: [PATCH] [apps] Docker only show current containers (#14152) * [apps] enable RRD filename filtering * count/exists * Switch to Applications table * rework similar to zfs * Update docker.inc.php Co-authored-by: Tony Murray --- .../graphs/application/docker-common.inc.php | 2 +- .../html/pages/device/apps/docker.inc.php | 27 ++++++++++--------- includes/polling/applications/docker.inc.php | 4 ++- tests/data/linux_docker-v1.json | 2 +- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/includes/html/graphs/application/docker-common.inc.php b/includes/html/graphs/application/docker-common.inc.php index a524eacddc..e2fcf8b17c 100644 --- a/includes/html/graphs/application/docker-common.inc.php +++ b/includes/html/graphs/application/docker-common.inc.php @@ -14,7 +14,7 @@ $smalldescrlen = 25; if (isset($vars['container'])) { $containers = [$vars['container']]; } else { - $containers = Rrd::getRrdApplicationArrays($device, $app->app_id, 'docker'); + $containers = $app->data['containers'] ?? []; } $int = 0; diff --git a/includes/html/pages/device/apps/docker.inc.php b/includes/html/pages/device/apps/docker.inc.php index a431264ef3..c3ce049d71 100644 --- a/includes/html/pages/device/apps/docker.inc.php +++ b/includes/html/pages/device/apps/docker.inc.php @@ -1,9 +1,5 @@ 'device', 'device' => $device['device_id'], @@ -11,20 +7,25 @@ $link_array = [ 'app' => 'docker', ]; -$containers_list = []; +print_optionbar_start(); -foreach ($domain_list as $label) { - $container = $label; +echo generate_link('All Containers', $link_array); +echo ' | Containers:'; - if ($vars['container'] == $container) { - $label = '' . $label . ''; +$containers = $app->data['containers'] ?? []; +sort($containers); +foreach ($containers as $index => $container) { + $label = $vars['container'] == $container + ? '' . $container . '' + : $container; + + echo generate_link($label, $link_array, ['container' => $container]); + + if ($index < (count($containers) - 1)) { + echo ', '; } - - array_push($containers_list, generate_link($label, $link_array, ['container' => $container])); } -printf('%s | containers: %s', generate_link('All Containers', $link_array), implode(', ', $containers_list)); - print_optionbar_end(); $graphs = [ diff --git a/includes/polling/applications/docker.inc.php b/includes/polling/applications/docker.inc.php index 9af6e613c6..d8f9044b8c 100644 --- a/includes/polling/applications/docker.inc.php +++ b/includes/polling/applications/docker.inc.php @@ -46,8 +46,9 @@ $rrd_def = RrdDefinition::make() ->addDataset('mem_limit', 'GAUGE', 0); $metrics = []; +$containerNames = []; foreach ($docker_data as $data) { - $container = $data['container']; + $containerNames[] = $container = $data['container']; $rrd_name = ['app', $name, $app->app_id, $container]; @@ -63,5 +64,6 @@ foreach ($docker_data as $data) { $tags = ['name' => $container, 'app_id' => $app->app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name]; data_update($device, 'app', $tags, $fields); } +$app->data = ['containers' => $containerNames]; update_application($app, $output, $metrics); diff --git a/tests/data/linux_docker-v1.json b/tests/data/linux_docker-v1.json index 89b3df7b37..4c6e89c235 100644 --- a/tests/data/linux_docker-v1.json +++ b/tests/data/linux_docker-v1.json @@ -22,7 +22,7 @@ "app_state_prev": "UNKNOWN", "app_status": "", "app_instance": "", - "data": null + "data": "{\"containers\":[\"foobar_laravel.test_1\",\"foobar_dashboard_1\",\"foobar_meilisearch_1\",\"foobar_mysql_1\",\"foobar_redis_1\"]}" } ], "application_metrics": [