From 03ae6af218488ddee6b6e2d621a9dde12ce017f8 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Thu, 6 Jul 2023 12:33:06 -0700 Subject: [PATCH] SHIBUI-2584 Correcting/updating the scheduler. Additional debug logging setup when data is sent. --- .../CoreShibUiConfiguration.java | 22 ++++++++++++++++--- .../admin/ui/controller/BeaconController.java | 3 ++- .../ui/scheduled/BeaconReportingTask.java | 4 +++- 3 files changed, 24 insertions(+), 5 deletions(-) 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 2c33e61c4..5bd6d0937 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 @@ -46,15 +46,16 @@ import edu.internet2.tier.shibboleth.admin.util.LuceneUtility; import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions; import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; import net.javacrumbs.shedlock.core.LockProvider; import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; import org.apache.lucene.analysis.Analyzer; 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.SpringBootConfiguration; 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; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -82,11 +83,13 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; +import java.util.Random; @SpringBootConfiguration @Import(SearchConfiguration.class) @ComponentScan(basePackages = "{ edu.internet2.tier.shibboleth.admin.ui.service }") @EnableConfigurationProperties({CustomPropertiesConfiguration.class, ShibUIConfiguration.class}) +@Slf4j public class CoreShibUiConfiguration { @Bean public OpenSamlObjects openSamlObjects() { @@ -276,8 +279,21 @@ public LockProvider lockProvider(DataSource dataSource) { @Bean public String getBeaconCronValue(BeaconConfigurationRepository repo) { - Optional bc = repo.findById(1); - return bc.isPresent() ? bc.get().getSendCron() : "0 3 * * * *"; + Optional obc = repo.findById(1); + BeaconConfiguration bc; + if (obc.isEmpty()) { + //set random cron in db + BeaconConfiguration newbc = new BeaconConfiguration(); + Random rand = new Random(); + String cron = "0 " + rand.nextInt(60) + " " + rand.nextInt(4) + " * * ?"; + newbc.setSendCron(cron); + repo.save(newbc); + bc = repo.findById(1).get(); + } else { + bc = obc.get(); + } + log.info("Scheduling beacon cron: {}", bc.getSendCron()); + return bc.getSendCron(); } @Bean diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/BeaconController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/BeaconController.java index e41f17f39..9b047142b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/BeaconController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/BeaconController.java @@ -26,7 +26,8 @@ public ResponseEntity getDetail() throws JsonProcessingException { return ResponseEntity.ok(service.getBeaconData()); } - @PostMapping("/send") + // This should be a POST, but to make it easier to hit, this is a GET + @GetMapping("/send") public ResponseEntity forceSendBeaconData() { beaconReporter.sendBeaconData(); return ResponseEntity.ok("Manual push of beacon data completed"); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/scheduled/BeaconReportingTask.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/scheduled/BeaconReportingTask.java index 65d430b40..92708363a 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/scheduled/BeaconReportingTask.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/scheduled/BeaconReportingTask.java @@ -36,16 +36,18 @@ public class BeaconReportingTask { public void sendBeaconData() { endpointUrls.forEach(url -> { try { + String dataOutput = dataService.getBeaconData(); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json; utf-8"); con.setRequestProperty("Accept", "application/json"); con.setDoOutput(true); try (OutputStream os = con.getOutputStream()) { - byte[] input = dataService.getBeaconData().getBytes(StandardCharsets.UTF_8); + byte[] input = dataOutput.getBytes(StandardCharsets.UTF_8); os.write(input, 0, input.length); } log.info("TIER Beacon data sent to {} with response code: {}", url, con.getResponseCode()); + log.debug("TIER Beacon data load: {}", dataOutput); } catch (IOException e) { e.printStackTrace();