Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

StandaloneSystemInfoWriter.java 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2023 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonar.server.platform;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24. import org.sonar.api.utils.text.JsonWriter;
  25. import org.sonar.process.systeminfo.SystemInfoSection;
  26. import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo;
  27. import org.sonar.server.ce.http.CeHttpClient;
  28. import org.sonar.server.health.Health;
  29. import org.sonar.server.health.HealthChecker;
  30. import static java.util.Arrays.stream;
  31. public class StandaloneSystemInfoWriter extends AbstractSystemInfoWriter {
  32. private final CeHttpClient ceHttpClient;
  33. private final HealthChecker healthChecker;
  34. private final SystemInfoSection[] systemInfoSections;
  35. public StandaloneSystemInfoWriter(CeHttpClient ceHttpClient, HealthChecker healthChecker, SystemInfoSection... systemInfoSections) {
  36. this.ceHttpClient = ceHttpClient;
  37. this.healthChecker = healthChecker;
  38. this.systemInfoSections = systemInfoSections;
  39. }
  40. @Override
  41. public void write(JsonWriter json) {
  42. writeHealth(json);
  43. List<ProtobufSystemInfo.Section> sections = stream(systemInfoSections)
  44. .map(SystemInfoSection::toProtobuf)
  45. .collect(Collectors.toCollection(ArrayList::new));
  46. ceHttpClient.retrieveSystemInfo()
  47. .ifPresent(ce -> sections.addAll(ce.getSectionsList()));
  48. writeSections(sections, json);
  49. }
  50. private void writeHealth(JsonWriter json) {
  51. Health health = healthChecker.checkNode();
  52. writeHealth(health, json);
  53. }
  54. }