diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java index 7d001b90f..4781fe0c0 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java @@ -52,6 +52,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.actuate.health.HealthEndpoint; import org.springframework.boot.actuate.info.InfoEndpoint; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -278,8 +279,9 @@ public String getBeaconCronValue(BeaconConfigurationRepository repo) @Bean public IBeaconDataService getBeaconDataService(@Value("${shibui.beacon.productName:ShibUi}") String productName, InfoEndpoint info, @Value("#{environment.TIERVERSION}") String tierVersion, EntityDescriptorRepository entityDescriptorRepository, MetadataResolverRepository metadataResolverRepository, FilterRepository filterRepository, - GroupsRepository groupsRepository, RoleRepository roleRepository, BeaconConfigurationRepository beaconConfigurationRepository, UserService userService) { - BeaconDataServiceImpl result = new BeaconDataServiceImpl(productName, info, tierVersion, entityDescriptorRepository, metadataResolverRepository, filterRepository, groupsRepository, roleRepository, beaconConfigurationRepository, userService); + GroupsRepository groupsRepository, RoleRepository roleRepository, BeaconConfigurationRepository beaconConfigurationRepository, + UserService userService, HealthEndpoint healthEndpoint) { + BeaconDataServiceImpl result = new BeaconDataServiceImpl(productName, info, tierVersion, entityDescriptorRepository, metadataResolverRepository, filterRepository, groupsRepository, roleRepository, beaconConfigurationRepository, userService, healthEndpoint); return result; } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java index f1b4a7e8a..0047275d7 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/BeaconDataServiceImpl.java @@ -2,8 +2,8 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; -import edu.internet2.tier.shibboleth.admin.ui.beacon.BeaconDetail; -import edu.internet2.tier.shibboleth.admin.ui.beacon.ShibuiDetail; +import edu.internet2.tier.shibboleth.admin.ui.service.beacon.BeaconDetail; +import edu.internet2.tier.shibboleth.admin.ui.service.beacon.ShibuiDetail; import edu.internet2.tier.shibboleth.admin.ui.domain.BeaconConfiguration; import edu.internet2.tier.shibboleth.admin.ui.repository.BeaconConfigurationRepository; import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository; @@ -14,9 +14,11 @@ import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.actuate.health.HealthEndpoint; import org.springframework.boot.actuate.info.InfoEndpoint; import java.util.Arrays; +import java.util.HashMap; import java.util.Map; public class BeaconDataServiceImpl implements IBeaconDataService { @@ -24,6 +26,7 @@ public class BeaconDataServiceImpl implements IBeaconDataService { private String productName; private String tierVersion; private String version; + private String db; private EntityDescriptorRepository entityDescriptorRepository; private MetadataResolverRepository metadataResolverRepository; @@ -35,12 +38,15 @@ public class BeaconDataServiceImpl implements IBeaconDataService { public BeaconDataServiceImpl(String productName, InfoEndpoint info, String tierVersion, EntityDescriptorRepository entityDescriptorRepository, MetadataResolverRepository metadataResolverRepository, FilterRepository filterRepository, GroupsRepository groupsRepository, - RoleRepository roleRepository, BeaconConfigurationRepository beaconConfigurationRepository, UserService userService) { + RoleRepository roleRepository, BeaconConfigurationRepository beaconConfigurationRepository, UserService userService, + HealthEndpoint health) { mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // skip any null values this.productName = productName; this.version = info.info().get("build") == null ? "unknown" : ((Map)info.info().get("build")).get("version").toString(); + this.db = StringUtils.substringBetween(health.healthForPath("db").toString(), "database=", ","); + this.tierVersion = StringUtils.isBlank(tierVersion) ? "NA" : tierVersion; this.entityDescriptorRepository = entityDescriptorRepository; @@ -72,6 +78,7 @@ private ShibuiDetail getShibuiDetailData() { .dailyLogins(userService.getDailyLoginCount()) .numberOfGroups((int) groupsRepository.count()) .numberOfRoles((int) roleRepository.count()) + .db(this.db) .build(); return detail; } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/beacon/BeaconDetail.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java similarity index 86% rename from backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/beacon/BeaconDetail.java rename to backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java index ac690b1cb..bef94540f 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/beacon/BeaconDetail.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/BeaconDetail.java @@ -1,4 +1,4 @@ -package edu.internet2.tier.shibboleth.admin.ui.beacon; +package edu.internet2.tier.shibboleth.admin.ui.service.beacon; import lombok.Data; import lombok.experimental.Accessors; diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/beacon/ShibuiDetail.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/ShibuiDetail.java similarity index 82% rename from backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/beacon/ShibuiDetail.java rename to backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/ShibuiDetail.java index ec89e5f00..6bab7ef96 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/beacon/ShibuiDetail.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/beacon/ShibuiDetail.java @@ -1,4 +1,4 @@ -package edu.internet2.tier.shibboleth.admin.ui.beacon; +package edu.internet2.tier.shibboleth.admin.ui.service.beacon; import lombok.Builder; import lombok.Data; @@ -9,6 +9,7 @@ @Builder public class ShibuiDetail { private List authMechanisms; + private String db; private int numberOfMetadataSources; private int numberOfMetadataProviders; private int numberOfFilters;