Skip to content

Commit 3b9980c

Browse files
committed
refactor: extract getContainerVersion method from inline loops
1 parent 8ae77d5 commit 3b9980c

3 files changed

Lines changed: 39 additions & 37 deletions

File tree

root/app/www/public/ajax/containers.php

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -566,8 +566,8 @@
566566
$apiRequest = apiRequest('docker/container/pull', [], ['name' => $image]);
567567
logger(UI_LOG, 'docker/container/pull:' . json_encode($apiRequest, JSON_UNESCAPED_SLASHES));
568568

569-
$apiRequest = apiRequest('docker/container/inspect', ['name' => $image, 'useCache' => false, 'format' => true]);
570-
$apiRequest = json_decode($apiRequest['result'], true);
569+
$apiRequest = apiRequest('docker/container/inspect', ['name' => $image, 'useCache' => false, 'format' => true]);
570+
$apiRequest = json_decode($apiRequest['result'], true);
571571
list($cr, $imageDigest) = explode('@', $apiRequest[0]['RepoDigests'][0]);
572572
logger(UI_LOG, 'dockerInspect:' . json_encode($apiRequest, JSON_UNESCAPED_SLASHES));
573573

@@ -588,7 +588,7 @@
588588
break;
589589
case '6': //-- GENERATE COMPOSE
590590
$containerList = '';
591-
$containers = explode(',', $_POST['hash']);
591+
$containers = explode(',', $_POST['hash']);
592592

593593
foreach ($containers as $selectedContainer) {
594594
$thisContainer = $docker->findContainer(['hash' => $selectedContainer, 'data' => $stateFile]);
@@ -615,14 +615,8 @@
615615
$inspectImage = $apiResponse['result'];
616616

617617
if ($inspectImage) {
618-
$inspect = json_decode($inspectImage, true);
619-
620-
foreach ($inspect[0]['Config']['Labels'] as $label => $val) {
621-
if (str_contains($label, 'image.version')) {
622-
$preVersion = $val;
623-
break;
624-
}
625-
}
618+
$inspect = json_decode($inspectImage, true);
619+
$preVersion = $docker->getContainerVersion($inspect);
626620
}
627621

628622
$apiRequest = apiRequest('docker/container/pull', [], ['name' => $image]);
@@ -649,12 +643,7 @@
649643
list($cr, $imageDigest) = explode('@', $inspectImage[0]['RepoDigests'][0]);
650644

651645
if ($inspectImage) {
652-
foreach ($inspectImage[0]['Config']['Labels'] as $label => $val) {
653-
if (str_contains($label, 'image.version')) {
654-
$postVersion = $val;
655-
break;
656-
}
657-
}
646+
$postVersion = $docker->getContainerVersion($inspectImage);
658647
}
659648

660649
$updateResult = 'complete';
@@ -684,7 +673,7 @@
684673
$result = 'Container ' . $container['Names'] . ' update: ' . $updateResult . ($preVersion && $postVersion && $updateResult == 'complete' ? ' from \'' . $preVersion . '\' to \'' . $postVersion . '\'' : '') . '<br>';
685674
break;
686675
case '8': //-- MOUNT COMPARE
687-
$result = $container['Names'] . '<br>';
676+
$result = $container['Names'] . '<br>';
688677
$result .= '<div class="ms-4">' . implode('<br>', $container['inspect'][0]['HostConfig']['Binds']) . '</div><br>';
689678
break;
690679
case '9': //-- REMOVE
@@ -704,7 +693,7 @@
704693
logger(UI_LOG, 'dockerAPI/container/create:' . json_encode($apiRequest, JSON_UNESCAPED_SLASHES));
705694
$apiRequest = json_decode($apiRequest['result'], true);
706695

707-
$result = $container['Names'] . '<br>';
696+
$result = $container['Names'] . '<br>';
708697
$result .= 'Endpoint: <code>' . $apiRequest['endpoint'] . '</code><br>';
709698
$result .= '<pre>' . json_encode($apiRequest['payload'], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . '</pre>';
710699
break;
@@ -713,12 +702,7 @@
713702
logger(UI_LOG, 'docker/container/inspect: ' . json_encode($apiResponse, JSON_UNESCAPED_SLASHES));
714703
$inspectImage = json_decode($apiResponse['result'], true);
715704

716-
foreach ($inspectImage[0]['Config']['Labels'] as $label => $val) {
717-
if (str_contains($label, 'image.version')) {
718-
$version = $val;
719-
break;
720-
}
721-
}
705+
$version = $docker->getContainerVersion($inspectImage);
722706

723707
logger(UI_LOG, 'Getting registry digest: ' . $image);
724708
$regctlDigest = trim(regctlCheck($image));

root/app/www/public/classes/traits/Docker/Container.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,32 @@ public function exec($container, $command)
191191

192192
return $this->output;
193193
}
194+
195+
public function getContainerVersion($inspect, $ui = true)
196+
{
197+
$return = '';
198+
199+
//-- CHECK: Config.Labels -> org.opencontainers.image.version
200+
foreach ($inspect[0]['Config']['Labels'] as $label => $val) {
201+
if (str_contains($label, 'image.version')) {
202+
$return = $val;
203+
break;
204+
}
205+
}
206+
//-- CHECK: Config.Env -> VERSION
207+
foreach ($inspect[0]['Config']['Env'] as $env => $val) {
208+
if (str_starts_with(strtoupper($val), 'VERSION=')) {
209+
$return = explode('=', $val)[1];
210+
break;
211+
}
212+
}
213+
//-- ADD LINKS IF POSSIBLE
214+
$rev = substr($inspect[0]['Config']['Labels']['org.opencontainers.image.revision'] ?? '', 0, 7);
215+
$source = $inspect[0]['Config']['Labels']['org.opencontainers.image.source'] ?? '';
216+
if (!empty($rev) && !empty($source)) {
217+
$link = $source . '/commit/' . $rev;
218+
$return .= $ui ? ' <a href="' . $link . '" target="_blank">' . $rev . '</a>' : '[' . $rev . '](' . $link . ')';
219+
}
220+
return $return;
221+
}
194222
}

root/app/www/public/crons/pulls.php

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,7 @@
101101
$inspectImage = json_decode($inspectImage, true);
102102

103103
if ($inspectImage) {
104-
foreach ($inspectImage[0]['Config']['Labels'] as $label => $val) {
105-
if (str_contains($label, 'image.version')) {
106-
$preVersion = $val;
107-
break;
108-
}
109-
}
104+
$preVersion = $docker->getContainerVersion($inspectImage, false);
110105
}
111106

112107
$msg = 'Pre image version: ' . $preVersion;
@@ -271,12 +266,7 @@
271266
$inspectImage = json_decode($inspectImage, true);
272267

273268
if ($inspectImage) {
274-
foreach ($inspectImage[0]['Config']['Labels'] as $label => $val) {
275-
if (str_contains($label, 'image.version')) {
276-
$postVersion = $val;
277-
break;
278-
}
279-
}
269+
$postVersion = $docker->getContainerVersion($inspectImage, false);
280270
}
281271

282272
$msg = 'Post image version: ' . $postVersion;

0 commit comments

Comments
 (0)