protected RestChannelConsumer prepareRequest()

in src/main/java/org/opensearch/performanceanalyzer/http_action/config/PerformanceAnalyzerClusterConfigAction.java [172:222]


    protected RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client)
            throws IOException {
        if (request.method() == RestRequest.Method.POST && request.content().length() > 0) {
            Map<String, Object> map =
                    XContentHelper.convertToMap(request.content(), false, XContentType.JSON).v2();
            Object value = map.get(ENABLED);
            LOG.debug(
                    "PerformanceAnalyzer:Value (Object) Received as Part of Request: {} current value: {}",
                    value,
                    clusterSettingHandler.getCurrentClusterSettingValue());

            if (value instanceof Boolean) {
                if (request.path().contains(RCA_CLUSTER_CONFIG_PATH)
                        || request.path().contains(LEGACY_RCA_CLUSTER_CONFIG_PATH)) {
                    clusterSettingHandler.updateRcaSetting((Boolean) value);
                } else if (request.path().contains(LOGGING_CLUSTER_CONFIG_PATH)
                        || request.path().contains(LEGACY_LOGGING_CLUSTER_CONFIG_PATH)) {
                    clusterSettingHandler.updateLoggingSetting((Boolean) value);
                } else if (request.path().contains(BATCH_METRICS_CLUSTER_CONFIG_PATH)
                        || request.path().contains(LEGACY_BATCH_METRICS_CLUSTER_CONFIG_PATH)) {
                    clusterSettingHandler.updateBatchMetricsSetting((Boolean) value);
                } else {
                    clusterSettingHandler.updatePerformanceAnalyzerSetting((Boolean) value);
                }
            }
            // update node stats setting if exists
            if (map.containsKey(SHARDS_PER_COLLECTION)) {
                Object shardPerCollectionValue = map.get(SHARDS_PER_COLLECTION);
                if (shardPerCollectionValue instanceof Integer) {
                    nodeStatsSettingHandler.updateNodeStatsSetting(
                            (Integer) shardPerCollectionValue);
                }
            }
        }

        return channel -> {
            try {
                XContentBuilder builder = channel.newBuilder();
                builder.startObject();
                builder.field(CURRENT, clusterSettingHandler.getCurrentClusterSettingValue());
                builder.field(SHARDS_PER_COLLECTION, nodeStatsSettingHandler.getNodeStatsSetting());
                builder.field(
                        BATCH_METRICS_RETENTION_PERIOD_MINUTES,
                        PluginSettings.instance().getBatchMetricsRetentionPeriodMinutes());
                builder.endObject();
                channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder));
            } catch (IOException ioe) {
                LOG.error("Error sending response", ioe);
            }
        };
    }