Minor refactoring.

This commit is contained in:
Michael Lipp 2025-01-14 10:22:56 +01:00
parent db7fbe2b7c
commit 15ac0721a6
3 changed files with 19 additions and 24 deletions

View file

@ -268,6 +268,21 @@ public class VmDefinition {
this.status = status; this.status = status;
} }
/**
* Return a condition's status.
*
* @param name the condition's name
* @return the status, if the condition is defined
*/
public Optional<Boolean> conditionStatus(String name) {
return this.<List<Map<String, Object>>> fromStatus("conditions")
.orElse(Collections.emptyList()).stream()
.filter(cond -> DataPath.get(cond, "type")
.map(name::equals).orElse(false))
.findFirst().map(cond -> DataPath.get(cond, "status")
.map("True"::equals).orElse(false));
}
/** /**
* Set extra data (locally used, unknown to kubernetes). * Set extra data (locally used, unknown to kubernetes).
* *

View file

@ -24,9 +24,6 @@ import io.kubernetes.client.util.Watch;
import io.kubernetes.client.util.generic.options.ListOptions; import io.kubernetes.client.util.generic.options.ListOptions;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
@ -49,7 +46,6 @@ import static org.jdrupes.vmoperator.manager.Constants.VM_OP_NAME;
import org.jdrupes.vmoperator.manager.events.ChannelManager; import org.jdrupes.vmoperator.manager.events.ChannelManager;
import org.jdrupes.vmoperator.manager.events.VmChannel; import org.jdrupes.vmoperator.manager.events.VmChannel;
import org.jdrupes.vmoperator.manager.events.VmDefChanged; import org.jdrupes.vmoperator.manager.events.VmDefChanged;
import org.jdrupes.vmoperator.util.DataPath;
import org.jgrapes.core.Channel; import org.jgrapes.core.Channel;
import org.jgrapes.core.Event; import org.jgrapes.core.Event;
@ -184,16 +180,7 @@ public class VmMonitor extends
// VM definition status changes before the pod terminates. // VM definition status changes before the pod terminates.
// This results in pod information being shown for a stopped // This results in pod information being shown for a stopped
// VM which is irritating. So check condition first. // VM which is irritating. So check condition first.
@SuppressWarnings("PMD.LambdaCanBeMethodReference") if (!vmDef.conditionStatus("Running").orElse(false)) {
var isRunning
= vmDef.<List<Map<String, Object>>> fromStatus("conditions")
.orElse(Collections.emptyList()).stream()
.filter(cond -> DataPath.get(cond, "type")
.map(t -> "Running".equals(t)).orElse(false))
.findFirst().map(cond -> DataPath.get(cond, "status")
.map(s -> "True".equals(s)).orElse(false))
.orElse(false);
if (!isRunning) {
return; return;
} }
var podSearch = new ListOptions(); var podSearch = new ListOptions();

View file

@ -29,9 +29,7 @@ import java.math.BigDecimal;
import java.math.BigInteger; import java.math.BigInteger;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Collections;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
@ -328,14 +326,9 @@ public class VmMgmt extends FreeMarkerConlet<VmMgmt.VmsModel> {
.add(vmDef.<String> fromStatus("ram") .add(vmDef.<String> fromStatus("ram")
.map(r -> Quantity.fromString(r).getNumber().toBigInteger()) .map(r -> Quantity.fromString(r).getNumber().toBigInteger())
.orElse(BigInteger.ZERO)); .orElse(BigInteger.ZERO));
summary.runningVms if (vmDef.conditionStatus("Running").orElse(false)) {
+= vmDef.<List<Map<String, Object>>> fromStatus("conditions") summary.runningVms += 1;
.orElse(Collections.emptyList()).stream() }
.filter(cond -> DataPath.get(cond, "type")
.map(t -> "Running".equals(t)).orElse(false)
&& DataPath.get(cond, "status")
.map(s -> "True".equals(s)).orElse(false))
.count();
} }
cachedSummary = summary; cachedSummary = summary;
return summary; return summary;