LocalStackCapabilitySnapshotHealth.java
package com.cloudforge.core.local;
import com.cloudforge.core.manager.ManagerAwsCapabilityCatalog;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/** JSON-friendly projection of {@link LocalStackCapabilitySnapshot} for health APIs. */
public final class LocalStackCapabilitySnapshotHealth {
private LocalStackCapabilitySnapshotHealth() {
}
public static Map<String, Object> toHealthFields(LocalStackCapabilitySnapshot snapshot) {
Map<String, Object> fields = new LinkedHashMap<>();
fields.put("healthy", snapshot.healthy());
fields.put("tierProfile", snapshot.tierProfile().name().toLowerCase(Locale.ROOT));
fields.put("edition", snapshot.edition());
fields.put("version", snapshot.version());
List<String> capabilities = new ArrayList<>();
snapshot.capabilities().stream()
.map(cap -> cap.name().toLowerCase(Locale.ROOT))
.sorted()
.forEach(capabilities::add);
fields.put("capabilities", capabilities);
fields.put("supportsFargatePath", snapshot.supportsFargatePath());
fields.put("supportsRdsPath", snapshot.supportsRdsPath());
fields.put("supportsEc2RuntimePath", snapshot.supportsEc2RuntimePath());
fields.put("keepEfsResources", snapshot.keepEfsResources());
fields.put("keepBackupResources", snapshot.keepBackupResources());
fields.put("operatorIamCatalogVersion", ManagerAwsCapabilityCatalog.CATALOG_VERSION);
if (!snapshot.details().isEmpty()) {
fields.put("details", snapshot.details());
}
return fields;
}
}