gerlowskija commented on code in PR #4078:
URL: https://github.com/apache/solr/pull/4078#discussion_r2901730771


##########
solr/solrj/src/java/org/apache/solr/client/solrj/request/SystemInfoRequest.java:
##########
@@ -83,7 +83,7 @@ public ApiVersion getApiVersion() {
       // (/solr) /admin/info/system
       return ApiVersion.V1;
     }
-    // Ref. org.apache.solr.handler.admin.api.NodeSystemInfoAPI : /node/system
+    // /node/system

Review Comment:
   [0] We have an auto-generated version of "SystemInfoRequest" specifically 
for the v2 APIs - we needn't try to support v2 in SystemInfoRequest itself.



##########
solr/api/src/java/org/apache/solr/client/api/model/CoreInfoResponse.java:
##########
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.client.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Date;
+
+public class CoreInfoResponse extends SolrJerseyResponse {

Review Comment:
   [Q] What uses this "CoreInfoResponse" in the latest version of this PR?
   
   AFAICT it's returned by `SystemInfoProvider.getCoreInfo`, but nothing 
actually calls *that* method.  So maybe both that method and this class can be 
removed for now?



##########
solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc:
##########
@@ -302,7 +302,7 @@ Only available from the V2 API.
 
 [source.bash]
 ----
-curl http://localhost:8983/api/node/info/system/lucene
+curl http://localhost:8983/api/node/system/lucene

Review Comment:
   We've backed out these more-specific endpoints, so they should go from the 
docs as well.



##########
solr/core/src/java/org/apache/solr/handler/admin/api/GetNodeSystemInfo.java:
##########
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.handler.admin.api;
+
+import jakarta.inject.Inject;
+import java.lang.invoke.MethodHandles;
+import org.apache.solr.api.JerseyResource;
+import org.apache.solr.client.api.endpoint.NodeSystemInfoApi;
+import org.apache.solr.client.api.model.NodeSystemResponse;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.handler.admin.AdminHandlersProxy;
+import org.apache.solr.handler.admin.SystemInfoProvider;
+import org.apache.solr.jersey.PermissionName;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.security.PermissionNameProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Implementation of the V2 JerseyResource /node/system */
+public class GetNodeSystemInfo extends JerseyResource implements 
NodeSystemInfoApi {
+  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  private final SolrQueryRequest solrQueryRequest;
+  private final SolrQueryResponse solrQueryResponse;
+
+  @Inject
+  public GetNodeSystemInfo(SolrQueryRequest solrQueryRequest, 
SolrQueryResponse solrQueryResponse) {
+    this.solrQueryRequest = solrQueryRequest;
+    this.solrQueryResponse = solrQueryResponse;
+  }
+
+  @Override
+  @PermissionName(PermissionNameProvider.Name.CONFIG_READ_PERM)
+  public NodeSystemResponse getNodeSystemInfo(String nodes) {
+    solrQueryResponse.setHttpCaching(false);
+
+    // TODO: AdminHandlersProxy does not support V2: PRs #4057, #3991

Review Comment:
   [Q] At least one of these PRs is merged now?
   
   Also, what is the state of this TODO overall?  Is AdminHandlersProxy still a 
blocker for getting this merged in some way?



##########
solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java:
##########
@@ -72,181 +38,28 @@
 public class SystemInfoHandler extends RequestHandlerBase {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-  /**
-   * Expert level system property to prevent doing a reverse lookup of our 
hostname. This property
-   * will be logged as a suggested workaround if any problems are noticed when 
doing reverse lookup.
-   *
-   * <p>TODO: should we refactor this (and the associated logic) into a helper 
method for any other
-   * places where DNS is used?
-   *
-   * @see #initHostname
-   */
-  private static final String REVERSE_DNS_OF_LOCALHOST_SYSPROP =
-      "solr.admin.handler.systeminfo.dns.reverse.lookup.enabled";
-
-  /**
-   * Local cache for BeanInfo instances that are created to scan for system 
metrics. List of
-   * properties is not supposed to change for the JVM lifespan, so we can keep 
already create
-   * BeanInfo instance for future calls.
-   */
-  private static final ConcurrentMap<Class<?>, BeanInfo> beanInfos = new 
ConcurrentHashMap<>();
-
-  // on some platforms, resolving canonical hostname can cause the thread
-  // to block for several seconds if name services aren't available
-  // so resolve this once per handler instance
-  // (ie: not static, so core reload will refresh)
-  private String hostname = null;
-
   private CoreContainer cc;
 
   public SystemInfoHandler(CoreContainer cc) {
     super();
     this.cc = cc;
-    initHostname();
-  }
-
-  /**
-   * Iterates over properties of the given MXBean and invokes the provided 
consumer with each
-   * property name and its current value.
-   *
-   * @param obj an instance of MXBean
-   * @param interfaces interfaces that it may implement. Each interface will 
be tried in turn, and
-   *     only if it exists and if it contains unique properties then they will 
be added as metrics.
-   * @param consumer consumer for each property name and value
-   * @param <T> formal type
-   */
-  public static <T extends PlatformManagedObject> void forEachGetterValue(
-      T obj, String[] interfaces, BiConsumer<String, Object> consumer) {
-    for (String clazz : interfaces) {
-      try {
-        final Class<? extends PlatformManagedObject> intf =
-            Class.forName(clazz).asSubclass(PlatformManagedObject.class);
-        forEachGetterValue(obj, intf, consumer);
-      } catch (ClassNotFoundException e) {
-        // ignore
-      }
-    }
-  }
-
-  /**
-   * Iterates over properties of the given MXBean and invokes the provided 
consumer with each
-   * property name and its current value.
-   *
-   * @param obj an instance of MXBean
-   * @param intf MXBean interface, one of {@link PlatformManagedObject}-s
-   * @param consumer consumer for each property name and value
-   * @param <T> formal type
-   */
-  public static <T extends PlatformManagedObject> void forEachGetterValue(
-      T obj, Class<? extends T> intf, BiConsumer<String, Object> consumer) {
-    if (intf.isInstance(obj)) {
-      BeanInfo beanInfo =
-          beanInfos.computeIfAbsent(
-              intf,
-              clazz -> {
-                try {
-                  return Introspector.getBeanInfo(
-                      clazz, clazz.getSuperclass(), 
Introspector.IGNORE_ALL_BEANINFO);
-
-                } catch (IntrospectionException e) {
-                  log.warn("Unable to fetch properties of MXBean {}", 
obj.getClass().getName());
-                  return null;
-                }
-              });
-
-      // if BeanInfo retrieval failed, return early
-      if (beanInfo == null) {
-        return;
-      }
-      for (final PropertyDescriptor desc : beanInfo.getPropertyDescriptors()) {
-        try {
-          Method readMethod = desc.getReadMethod();
-          if (readMethod == null) {
-            continue; // skip properties without a read method
-          }
-
-          final String name = desc.getName();
-          Object value = readMethod.invoke(obj);
-          consumer.accept(name, value);
-        } catch (Exception e) {
-          // didn't work, skip it...
-        }
-      }
-    }
-  }
-
-  private void initHostname() {
-    if (!EnvUtils.getPropertyAsBool(REVERSE_DNS_OF_LOCALHOST_SYSPROP, true)) {
-      log.info(
-          "Resolving canonical hostname for local host prevented due to '{}' 
sysprop",
-          REVERSE_DNS_OF_LOCALHOST_SYSPROP);
-      hostname = null;
-      return;
-    }
-
-    RTimer timer = new RTimer();
-    try {
-      InetAddress addr = InetAddress.getLocalHost();
-      hostname = addr.getCanonicalHostName();
-    } catch (Exception e) {
-      log.warn(
-          "Unable to resolve canonical hostname for local host, possible DNS 
misconfiguration. Set the '{}' sysprop to false on startup to prevent future 
lookups if DNS can not be fixed.",
-          REVERSE_DNS_OF_LOCALHOST_SYSPROP,
-          e);
-      hostname = null;
-      return;
-    }
-    timer.stop();
-
-    if (15000D < timer.getTime()) {
-      String readableTime = String.format(Locale.ROOT, "%.3f", 
(timer.getTime() / 1000));
-      log.warn(
-          "Resolving canonical hostname for local host took {} seconds, 
possible DNS misconfiguration. Set the '{}' sysprop to false on startup to 
prevent future lookups if DNS can not be fixed.",
-          readableTime,
-          REVERSE_DNS_OF_LOCALHOST_SYSPROP);
-    }
   }
 
   @Override
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) 
throws Exception {
     rsp.setHttpCaching(false);
+
     if (AdminHandlersProxy.maybeProxyToNodes(req, rsp, getCoreContainer(req))) 
{
       return; // Request was proxied to other node
     }
-    boolean solrCloudMode = getCoreContainer(req).isZooKeeperAware();
-    rsp.add("mode", solrCloudMode ? "solrcloud" : "std");
 
-    rsp.add("host", hostname);
+    SystemInfoProvider provider = new SystemInfoProvider(req);
+    NodeSystemResponse response = provider.getNodeSystemInfo(new 
NodeSystemResponse());
+    V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, response);
 
-    if (solrCloudMode) {
-      rsp.add("zkHost", 
getCoreContainer(req).getZkController().getZkServerAddress());
-    }
-    if (cc != null) {
-      rsp.add("solr_home", cc.getSolrHome());
-      rsp.add("core_root", cc.getCoreRootDirectory());
-    }
-
-    rsp.add("lucene", getLuceneInfo());
-    NodeConfig nodeConfig = getCoreContainer(req).getNodeConfig();
-    rsp.add("jvm", getJvmInfo(nodeConfig));
-    rsp.add("security", getSecurityInfo(req));
-    rsp.add("system", getSystemInfo());
-
-    rsp.add("gpu", getGpuInfo(req));
-    if (solrCloudMode) {
-      rsp.add("node", getCoreContainer(req).getZkController().getNodeName());
-    }
-    SolrEnvironment env =
-        SolrEnvironment.getFromSyspropOrClusterprop(
-            solrCloudMode ? 
getCoreContainer(req).getZkController().zkStateReader : null);
-    if (env.isDefined()) {
-      rsp.add("environment", env.getCode());
-      if (env.getLabel() != null) {
-        rsp.add("environment_label", env.getLabel());
-      }
-      if (env.getColor() != null) {
-        rsp.add("environment_color", env.getColor());
-      }
+    // back-compatible response with core info if available
+    if (req.getCore() != null) {

Review Comment:
   [-0] I _think_ we should be able to remove this block from here, since 
@epugh split the "CoreInfo" into a separate handler in #4084 ?



##########
solr/solrj/src/java/org/apache/solr/client/solrj/request/SystemInfoRequest.java:
##########
@@ -38,7 +39,7 @@ public SystemInfoRequest() {
 
   /**
    * @param path the HTTP path to use for this request. Supports V1 
"/admin/info/system" (default)
-   *     or V2 "/node/system"
+   *     or old V2 "/node/system"

Review Comment:
   Agreed - these v2 APIs are experimental for a reason.  We needn't maintain 
support for old paths here.



##########
solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc:
##########
@@ -90,215 +109,217 @@ The result of running `uname -a`.  Not available on 
Windows.
 `uptime`::
 The result of running `uptime`.  Not available on Windows.
 
+== Security Information Object
+
+The `security` key in the response is an object with these keys:
+
+`tls`::
+Flag to indicate if TLS is enabled or not. If disabled, this is the only key 
in the response.
+
+`authenticationPlugin`::
+The name of the configured authentication plugin.
+
+`authorizationPlugin`::
+The name of the configured authorization plugin.
+
+`username`::
+The name of the current user.
+
+`roles`::
+The roles of the current user.
+
+`permissions`::
+The permissions of the current user.
+
+== GPU Information Object
+
+The `gpu` key in the response is an object with these keys:
+
+`available`::
+Flag to indicate if GPU is available or not. If unavailable, this is the only 
key in the response.
+
+`count`::
+Count of available GPUs.
+
+`memory`::
+An object listing the 'free', 'total', and 'used' memory.
+
+`devices`::
+A listing of the GPU devices.
+
 == System Information API Examples
 
-Retrieve system information from a node in cloud mode.
+Examples on this page refer to the V2 API.
+
+[NOTE]
+----
+The V1 response format is slightly different from th V2 response shown here.  
In V1, the node information in not wrapped in the `nodeInfo` element, 
therefore, the information is presented at the same level as the `status`and 
`QTime`of the response header.
+----
+
+=== Retrieve system information from a node in cloud mode.
+
 
 [source.bash]
 ----
-curl http://localhost:8983/solr/admin/info/system
+curl http://localhost:8983/api/node/system
 ----
 
 [source.json]
 ----
 {
-  "responseHeader":{
-    "status":0,
-    "QTime":13},
-  "mode":"solrcloud",
-  "host":"localhost",
-  "zkHost":"192.168.32.3:2181",
-  "solr_home":"/var/solr/data",
-  "lucene":{
-    "solr-spec-version":"8.1.1",
-    "solr-impl-version":"8.1.1 fcbe46c28cef11bc058779afba09521de1b19bef - ab - 
2019-05-22 15:20:01",
-    "lucene-spec-version":"8.1.1",
-    "lucene-impl-version":"8.1.1 fcbe46c28cef11bc058779afba09521de1b19bef - ab 
- 2019-05-22 15:15:24"},
-  "jvm":{
-    "version":"11.0.3 11.0.3+7",
-    "name":"Oracle Corporation OpenJDK 64-Bit Server VM",
-    "spec":{
-      "vendor":"Oracle Corporation",
-      "name":"Java Platform API Specification",
-      "version":"11"},
-    "jre":{
-      "vendor":"Oracle Corporation",
-      "version":"11.0.3"},
-    "vm":{
-      "vendor":"Oracle Corporation",
-      "name":"OpenJDK 64-Bit Server VM",
-      "version":"11.0.3+7"},
-    "processors":4,
-    "memory":{
-      "free":"396 MB",
-      "total":"512 MB",
-      "max":"512 MB",
-      "used":"116 MB (%22.7)",
-      "raw":{
-        "free":415213560,
-        "total":536870912,
-        "max":536870912,
-        "used":121657352,
-        "used%":22.660447657108307}},
-    "jmx":{
-      "classpath":"start.jar",
-      "commandLineArgs":["-Xms512m",
-        "-Xmx512m",
-        "-XX:+UseG1GC",
-        "-XX:+PerfDisableSharedMem",
-        "-XX:+ParallelRefProcEnabled",
-        "-XX:MaxGCPauseMillis=250",
-        "-XX:+UseLargePages",
-        "-XX:+AlwaysPreTouch",
-        
"-Xlog:gc*:file=/var/solr/logs/solr_gc.log:time,uptime:filecount=9,filesize=20M",
-        "-Dcom.sun.management.jmxremote",
-        "-Dcom.sun.management.jmxremote.local.only=false",
-        "-Dcom.sun.management.jmxremote.ssl=false",
-        "-Dcom.sun.management.jmxremote.authenticate=false",
-        "-Dcom.sun.management.jmxremote.port=18983",
-        "-Dcom.sun.management.jmxremote.rmi.port=18983",
-        "-DzkClientTimeout=15000",
-        "-DzkHost=192.168.32.3:2181",
-        "-Dsolr.logs.dir=/var/solr/logs",
-        "-Dsolr.port.listen=8983",
-        "-DSTOP.PORT=7983",
-        "-DSTOP.KEY=solrrocks",
-        "-Duser.timezone=UTC",
-        "-Djetty.home=/opt/solr/server",
-        "-Dsolr.solr.home=/var/solr/data",
-        "-Dsolr.data.home=",
-        "-Dsolr.install.dir=/opt/solr",
-        
"-Dsolr.configset.default.confdir=/opt/solr/server/solr/configsets/_default/conf",
-        "-Dlog4j.configurationFile=file:/var/solr/log4j2.xml",
-        "-Xss256k",
-        "-Dsolr.jetty.https.port=8983"],
-      "startTime":"2019-07-18T11:16:00.769Z",
-      "upTimeMS":1339007}},
-  "system":{
-    "name":"Linux",
-    "arch":"amd64",
-    "availableProcessors":4,
-    "systemLoadAverage":0.92,
-    "version":"4.9.0-9-amd64",
-    "committedVirtualMemorySize":4317540352,
-    "freePhysicalMemorySize":117563392,
-    "freeSwapSpaceSize":11583721472,
-    "processCpuLoad":0.0,
-    "processCpuTime":42690000000,
-    "systemCpuLoad":0.0,
-    "totalPhysicalMemorySize":4005376000,
-    "totalSwapSpaceSize":12884897792,
-    "maxFileDescriptorCount":1048576,
-    "openFileDescriptorCount":225,
-    "uname":"Linux f0281c6ee880 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u3 
(2019-06-16) x86_64 GNU/Linux\n",
-    "uptime":" 11:38:19 up 28 days, 22:41,  0 users,  load average: 0.92, 
0.57, 0.51\n"},
-  "node":"172.17.0.4:8983_solr"}
+  "responseHeader": {
+    "status": 0,
+    "QTime": 4
+  },
+  "nodeInfo": {
+    "node": "localhost:8983_solr",
+    "mode": "solrcloud",
+    "zkHost": "127.0.0.1:9983",
+    "solr_home": "/opt/solr/example/cloud/node1/solr",
+    "core_root": "/opt/solr/example/cloud/node1/solr",
+    "lucene": {
+      "solr-spec-version": "11.0.0",
+      "solr-impl-version": "11.0.0-SNAPSHOT 
f096b9a8aa2e10b8d2e87d7b8699953544d0f4f6 [snapshot build, details omitted]",
+      "lucene-spec-version": "10.3.2",
+      "lucene-impl-version": "10.3.2 dadfd90b4401947f4d0387669dc94999fbb2c830 
- 2025-11-13 10:41:29"
+    },
+    "jvm": {
+      "name": "Ubuntu OpenJDK 64-Bit Server VM",
+      "version": "21.0.9 21.0.9+10-Ubuntu-124.04",
+      "processors": 4,
+      "jre": {
+        "vendor": "Ubuntu",
+        "version": "21.0.9"
+      },
+      "spec": {
+        "name": "Java Platform API Specification",
+        "vendor": "Oracle Corporation",
+        "version": "21"
+      },
+      "vm": {
+        "name": "OpenJDK 64-Bit Server VM",
+        "vendor": "Ubuntu",
+        "version": "21.0.9+10-Ubuntu-124.04"
+      },
+      "jmx": {
+        "classpath": "start.jar",
+        "startTime": 1771355675708,
+        "upTimeMS": 1695023,
+        "commandLineArgs": [
+          "-Xms512m",
+          "-Xmx512m",
+          "-XX:+UseG1GC",
+          "-XX:+PerfDisableSharedMem",
+          "-XX:+ParallelRefProcEnabled",
+          "-XX:MaxGCPauseMillis=250",
+          "-XX:+UseLargePages",
+          "-XX:+AlwaysPreTouch",
+          "-XX:+ExplicitGCInvokesConcurrent",
+          
"-Xlog:gc*:file=/opt/solr/../logs/solr_gc.log:time,uptime:filecount=9,filesize=20M",
+          "-Dsolr.jetty.inetaccess.includes=",
+          "-Dsolr.jetty.inetaccess.excludes=",
+          "-Dsolr.zookeeper.client.timeout=30000",
+          "-Dsolr.zookeeper.server.enabled=true",
+          "-Dsolr.logs.dir=/opt/solr/../logs",
+          "-Dsolr.port.listen=8983",
+          "-DSTOP.PORT=7983",
+          "-DSTOP.KEY=solrrocks",
+          "-Djava.io.tmpdir=/tmp",
+          "-Dsolr.host.advertise=localhost",
+          "-Duser.timezone=UTC",
+          "-XX:-OmitStackTraceInFastThrow",
+          "-XX:+CrashOnOutOfMemoryError",
+          "-XX:ErrorFile=/opt/solr/../logs/jvm_crash_%p.log",
+          "-Djetty.home=/opt/solr/server",
+          "-Dsolr.solr.home=/opt/solr/example/cloud/node1/solr",
+          "-Dsolr.install.dir=/opt/solr/",
+          "-Dsolr.install.symDir=/opt/solr/",
+          "-Dlog4j.configurationFile=/opt/solr/server/resources/log4j2.xml",
+          "-Xss256k",
+          "--add-modules=jdk.incubator.vector",
+          "--enable-native-access=ALL-UNNAMED",
+          "-Djava.security.manager",
+          "-Djava.security.policy=/opt/solr/server/etc/security.policy",
+          
"-Djava.security.properties=/opt/solr/server/etc/security.properties",
+          "-Dsolr.internal.network.permission=*",
+          "-Dsolr.log.muteconsole"
+        ]
+      },
+      "memory": {
+        "free": "229.5 MB",
+        "total": "512 MB",
+        "max": "512 MB",
+        "used": "282.5 MB (%55.2)",
+        "raw": {
+          "free": 240673856,
+          "total": 536870912,
+          "used": 296197056,
+          "max": 536870912,
+          "used%": 55.171000957489014
+        }
+      }
+    },
+    "security": {
+      "tls": false
+    },
+    "gpu": {
+      "available": false,
+      "count": 0
+    },
+    "system": {
+      "freePhysicalMemorySize": "2985586688",
+      "totalMemorySize": "8307912704",
+      "availableProcessors": "4",
+      "freeMemorySize": "2985586688",
+      "openFileDescriptorCount": "196",
+      "freeSwapSpaceSize": "2660519936",
+      "maxFileDescriptorCount": "65536",
+      "version": "6.14.0-33-generic",
+      "totalSwapSpaceSize": "4294963200",
+      "committedVirtualMemorySize": "4357632000",
+      "cpuLoad": "0.06624527740181138",
+      "systemLoadAverage": "0.3193359375",
+      "processCpuLoad": "0.004622084725943523",
+      "systemCpuLoad": "0.0",
+      "processCpuTime": "43450000000",
+      "name": "Linux",
+      "totalPhysicalMemorySize": "8307912704",
+      "arch": "amd64"
+    }
+  }
+}
 ----
 
-Retrieve system information from a core, without cloud mode.
+
+=== Retrieve specific system information.

Review Comment:
   [-0] This is no longer true per the most recent changes on this PR.



##########
solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc:
##########
@@ -18,18 +18,40 @@
 
 This API provides the same information displayed on the Dashboard.
 
-System information is available via:
+System information is available via the V2 API:

Review Comment:
   [0] We have a pattern for exposing v1/v2 API snippets in our ref-guide.  See 
https://solr.apache.org/guide/solr/latest/deployment-guide/collection-management.html
 for an example of what this looks like in a browser.
   
   The asciidoc syntax for this is:
   
   ```
   [tabs#someUniqueIdentifier]
   ======
   Tab1Name::
   +
   ====
   
   Tab1Content.  Typically, a
   
   [source,bash]
   ----
   block
   ----
   ====
   
   Tab2Name::
   +
   ====
   Tab2Content.  Also typically a
   
   [source,bash]
   ----
   block
   ----
   ====
   ======
   ```



##########
solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc:
##########
@@ -90,215 +109,217 @@ The result of running `uname -a`.  Not available on 
Windows.
 `uptime`::
 The result of running `uptime`.  Not available on Windows.
 
+== Security Information Object
+
+The `security` key in the response is an object with these keys:
+
+`tls`::
+Flag to indicate if TLS is enabled or not. If disabled, this is the only key 
in the response.
+
+`authenticationPlugin`::
+The name of the configured authentication plugin.
+
+`authorizationPlugin`::
+The name of the configured authorization plugin.
+
+`username`::
+The name of the current user.
+
+`roles`::
+The roles of the current user.
+
+`permissions`::
+The permissions of the current user.
+
+== GPU Information Object
+
+The `gpu` key in the response is an object with these keys:
+
+`available`::
+Flag to indicate if GPU is available or not. If unavailable, this is the only 
key in the response.
+
+`count`::
+Count of available GPUs.
+
+`memory`::
+An object listing the 'free', 'total', and 'used' memory.
+
+`devices`::
+A listing of the GPU devices.
+
 == System Information API Examples
 
-Retrieve system information from a node in cloud mode.
+Examples on this page refer to the V2 API.
+
+[NOTE]
+----
+The V1 response format is slightly different from th V2 response shown here.  
In V1, the node information in not wrapped in the `nodeInfo` element, 
therefore, the information is presented at the same level as the `status`and 
`QTime`of the response header.
+----
+
+=== Retrieve system information from a node in cloud mode.
+
 
 [source.bash]
 ----
-curl http://localhost:8983/solr/admin/info/system
+curl http://localhost:8983/api/node/system
 ----
 
 [source.json]
 ----
 {
-  "responseHeader":{
-    "status":0,
-    "QTime":13},
-  "mode":"solrcloud",
-  "host":"localhost",
-  "zkHost":"192.168.32.3:2181",
-  "solr_home":"/var/solr/data",
-  "lucene":{
-    "solr-spec-version":"8.1.1",
-    "solr-impl-version":"8.1.1 fcbe46c28cef11bc058779afba09521de1b19bef - ab - 
2019-05-22 15:20:01",
-    "lucene-spec-version":"8.1.1",
-    "lucene-impl-version":"8.1.1 fcbe46c28cef11bc058779afba09521de1b19bef - ab 
- 2019-05-22 15:15:24"},
-  "jvm":{
-    "version":"11.0.3 11.0.3+7",
-    "name":"Oracle Corporation OpenJDK 64-Bit Server VM",
-    "spec":{
-      "vendor":"Oracle Corporation",
-      "name":"Java Platform API Specification",
-      "version":"11"},
-    "jre":{
-      "vendor":"Oracle Corporation",
-      "version":"11.0.3"},
-    "vm":{
-      "vendor":"Oracle Corporation",
-      "name":"OpenJDK 64-Bit Server VM",
-      "version":"11.0.3+7"},
-    "processors":4,
-    "memory":{
-      "free":"396 MB",
-      "total":"512 MB",
-      "max":"512 MB",
-      "used":"116 MB (%22.7)",
-      "raw":{
-        "free":415213560,
-        "total":536870912,
-        "max":536870912,
-        "used":121657352,
-        "used%":22.660447657108307}},
-    "jmx":{
-      "classpath":"start.jar",
-      "commandLineArgs":["-Xms512m",
-        "-Xmx512m",
-        "-XX:+UseG1GC",
-        "-XX:+PerfDisableSharedMem",
-        "-XX:+ParallelRefProcEnabled",
-        "-XX:MaxGCPauseMillis=250",
-        "-XX:+UseLargePages",
-        "-XX:+AlwaysPreTouch",
-        
"-Xlog:gc*:file=/var/solr/logs/solr_gc.log:time,uptime:filecount=9,filesize=20M",
-        "-Dcom.sun.management.jmxremote",
-        "-Dcom.sun.management.jmxremote.local.only=false",
-        "-Dcom.sun.management.jmxremote.ssl=false",
-        "-Dcom.sun.management.jmxremote.authenticate=false",
-        "-Dcom.sun.management.jmxremote.port=18983",
-        "-Dcom.sun.management.jmxremote.rmi.port=18983",
-        "-DzkClientTimeout=15000",
-        "-DzkHost=192.168.32.3:2181",
-        "-Dsolr.logs.dir=/var/solr/logs",
-        "-Dsolr.port.listen=8983",
-        "-DSTOP.PORT=7983",
-        "-DSTOP.KEY=solrrocks",
-        "-Duser.timezone=UTC",
-        "-Djetty.home=/opt/solr/server",
-        "-Dsolr.solr.home=/var/solr/data",
-        "-Dsolr.data.home=",
-        "-Dsolr.install.dir=/opt/solr",
-        
"-Dsolr.configset.default.confdir=/opt/solr/server/solr/configsets/_default/conf",
-        "-Dlog4j.configurationFile=file:/var/solr/log4j2.xml",
-        "-Xss256k",
-        "-Dsolr.jetty.https.port=8983"],
-      "startTime":"2019-07-18T11:16:00.769Z",
-      "upTimeMS":1339007}},
-  "system":{
-    "name":"Linux",
-    "arch":"amd64",
-    "availableProcessors":4,
-    "systemLoadAverage":0.92,
-    "version":"4.9.0-9-amd64",
-    "committedVirtualMemorySize":4317540352,
-    "freePhysicalMemorySize":117563392,
-    "freeSwapSpaceSize":11583721472,
-    "processCpuLoad":0.0,
-    "processCpuTime":42690000000,
-    "systemCpuLoad":0.0,
-    "totalPhysicalMemorySize":4005376000,
-    "totalSwapSpaceSize":12884897792,
-    "maxFileDescriptorCount":1048576,
-    "openFileDescriptorCount":225,
-    "uname":"Linux f0281c6ee880 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u3 
(2019-06-16) x86_64 GNU/Linux\n",
-    "uptime":" 11:38:19 up 28 days, 22:41,  0 users,  load average: 0.92, 
0.57, 0.51\n"},
-  "node":"172.17.0.4:8983_solr"}
+  "responseHeader": {
+    "status": 0,
+    "QTime": 4
+  },
+  "nodeInfo": {

Review Comment:
   [-0] Again, this needs tweaked to bring it into line with your more recent 
changes.



##########
solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc:
##########
@@ -90,215 +109,217 @@ The result of running `uname -a`.  Not available on 
Windows.
 `uptime`::
 The result of running `uptime`.  Not available on Windows.
 
+== Security Information Object
+
+The `security` key in the response is an object with these keys:
+
+`tls`::
+Flag to indicate if TLS is enabled or not. If disabled, this is the only key 
in the response.
+
+`authenticationPlugin`::
+The name of the configured authentication plugin.
+
+`authorizationPlugin`::
+The name of the configured authorization plugin.
+
+`username`::
+The name of the current user.
+
+`roles`::
+The roles of the current user.
+
+`permissions`::
+The permissions of the current user.
+
+== GPU Information Object
+
+The `gpu` key in the response is an object with these keys:
+
+`available`::
+Flag to indicate if GPU is available or not. If unavailable, this is the only 
key in the response.
+
+`count`::
+Count of available GPUs.
+
+`memory`::
+An object listing the 'free', 'total', and 'used' memory.
+
+`devices`::
+A listing of the GPU devices.
+
 == System Information API Examples
 
-Retrieve system information from a node in cloud mode.
+Examples on this page refer to the V2 API.
+
+[NOTE]
+----
+The V1 response format is slightly different from th V2 response shown here.  
In V1, the node information in not wrapped in the `nodeInfo` element, 
therefore, the information is presented at the same level as the `status`and 
`QTime`of the response header.

Review Comment:
   [-0] This is no longer true as of your most recent changes.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to