diff --git a/src/main/kotlin/org/opensearch/observability/model/SavedVisualization.kt b/src/main/kotlin/org/opensearch/observability/model/SavedVisualization.kt index f934af864..0dbd09956 100644 --- a/src/main/kotlin/org/opensearch/observability/model/SavedVisualization.kt +++ b/src/main/kotlin/org/opensearch/observability/model/SavedVisualization.kt @@ -45,11 +45,13 @@ import org.opensearch.observability.util.logger * "application_id": "KE1Ie34BbsTr-CsB4G6Y", * "user_configs": "{\"dataConfig\":\"{}\",\"layoutConfig\": \"{}\"}", * "sub_type": "metric", + * "metric_type": "OpenTelemetryMetric", * "units_of_measure: "hours (h)", * "labels": [ * {"label":"avg"}, * {"label":"count"}, * ] + * } * } */ @@ -65,6 +67,7 @@ internal data class SavedVisualization( val applicationId: String? = null, val userConfigs: String? = null, val subType: String?, + val metricType: String? = null, val unitsOfMeasure: String? = null, val selectedLabels: SelectedLabels? = null, ) : BaseObjectData { @@ -81,6 +84,7 @@ internal data class SavedVisualization( private const val APPLICATION_ID_TAG = "application_id" private const val USER_CONFIGS_TAG = "user_configs" private const val SUB_TYPE_TAG = "sub_type" + private const val METRIC_TYPE_TAG = "metric_type" private const val UNITS_OF_MEASURE_TAG = "units_of_measure" private const val SELECTED_LABELS_TAG = "selected_labels" @@ -111,6 +115,7 @@ internal data class SavedVisualization( var applicationId: String? = null var userConfigs: String? = null var subType: String? = null + var metricType: String? = null var unitsOfMeasure: String? = null var selectedLabels: SelectedLabels? = null XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser) @@ -128,6 +133,7 @@ internal data class SavedVisualization( APPLICATION_ID_TAG -> applicationId = parser.text() USER_CONFIGS_TAG -> userConfigs = parser.text() SUB_TYPE_TAG -> subType = parser.text() + METRIC_TYPE_TAG -> metricType = parser.text() UNITS_OF_MEASURE_TAG -> unitsOfMeasure = parser.text() SELECTED_LABELS_TAG -> selectedLabels = SelectedLabels.parse(parser) else -> { @@ -147,8 +153,9 @@ internal data class SavedVisualization( applicationId, userConfigs, subType, + metricType, unitsOfMeasure, - selectedLabels + selectedLabels, ) } } @@ -177,6 +184,7 @@ internal data class SavedVisualization( applicationId = input.readOptionalString(), userConfigs = input.readOptionalString(), subType = input.readString(), + metricType = input.readOptionalString(), unitsOfMeasure = input.readOptionalString(), selectedLabels = input.readOptionalWriteable(SelectedLabels.reader), ) @@ -195,6 +203,7 @@ internal data class SavedVisualization( output.writeOptionalString(applicationId) output.writeOptionalString(userConfigs) output.writeString(subType) + output.writeOptionalString(metricType) output.writeOptionalString(unitsOfMeasure) output.writeOptionalWriteable(selectedLabels) } @@ -215,6 +224,7 @@ internal data class SavedVisualization( .fieldIfNotNull(APPLICATION_ID_TAG, applicationId) .fieldIfNotNull(USER_CONFIGS_TAG, userConfigs) .fieldIfNotNull(SUB_TYPE_TAG, subType) + .fieldIfNotNull(METRIC_TYPE_TAG, metricType) .fieldIfNotNull(UNITS_OF_MEASURE_TAG, unitsOfMeasure) .fieldIfNotNull(SELECTED_LABELS_TAG, selectedLabels) return builder.endObject() diff --git a/src/test/kotlin/org/opensearch/observability/model/SavedVisualizationTests.kt b/src/test/kotlin/org/opensearch/observability/model/SavedVisualizationTests.kt index 76ff58319..6e85ae464 100644 --- a/src/test/kotlin/org/opensearch/observability/model/SavedVisualizationTests.kt +++ b/src/test/kotlin/org/opensearch/observability/model/SavedVisualizationTests.kt @@ -32,6 +32,7 @@ internal class SavedVisualizationTests { "KE1Ie34BbsTr-CsB4G6Y", "{\"dataConfig\":\"{}\",\"layoutConfig\":\"{}\"}", "metric", + "OpenTelemetryMetric", "hours (h)" ) @@ -58,7 +59,8 @@ internal class SavedVisualizationTests { "\"selected_timestamp\":{\"name\":\"utc_time\",\"type\":\"timestamp\"},\"selected_fields\":{\"text\":\"" + "| fields clientip, bytes, memory, host\",\"tokens\":[{\"name\":\"utc_time\",\"type\":\"timestamp\"}]}," + "\"application_id\":\"KE1Ie34BbsTr-CsB4G6Y\",\"user_configs\":\"{\\\"dataConfig\\\":\\\"{}\\\"," + - "\\\"layoutConfig\\\":\\\"{}\\\"}\",\"sub_type\":\"metric\",\"units_of_measure\":\"hours (h)\"}" + "\\\"layoutConfig\\\":\\\"{}\\\"}\",\"sub_type\":\"metric\",\"metric_type\":\"OpenTelemetryMetric\"," + + "\"units_of_measure\":\"hours (h)\"}" val recreatedObject = createObjectFromJsonString(jsonString) { SavedVisualization.parse(it) } assertEquals(sampleSavedVisualization, recreatedObject) @@ -82,7 +84,8 @@ internal class SavedVisualizationTests { "\"selected_timestamp\":{\"name\":\"utc_time\",\"type\":\"timestamp\"},\"selected_fields\":{\"text\":\"|" + " fields clientip, bytes, memory, host\",\"tokens\":[{\"name\":\"utc_time\",\"type\":\"timestamp\"}]}," + "\"application_id\":\"KE1Ie34BbsTr-CsB4G6Y\",\"user_configs\":\"{\\\"dataConfig\\\":\\\"{}\\\"," + - "\\\"layoutConfig\\\":\\\"{}\\\"}\",\"sub_type\":\"metric\",\"units_of_measure\":\"hours (h)\"}" + "\\\"layoutConfig\\\":\\\"{}\\\"}\",\"sub_type\":\"metric\",\"metric_type\":\"OpenTelemetryMetric\"," + + "\"units_of_measure\":\"hours (h)\"}" val recreatedObject = createObjectFromJsonString(jsonString) { SavedVisualization.parse(it) } assertEquals(sampleSavedVisualization, recreatedObject)