diff --git a/build.gradle b/build.gradle index 4d462dda6..1dd10c6d1 100644 --- a/build.gradle +++ b/build.gradle @@ -216,7 +216,7 @@ dependencies { testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0" testImplementation "org.mockito:mockito-core:${versions.mockito}" - add("ktlint", "com.pinterest.ktlint:ktlint-cli:1.1.0") { + add("ktlint", "com.pinterest.ktlint:ktlint-cli:1.5.0") { attributes { attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL)) } diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/IndexManagementExtension.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/IndexManagementExtension.kt index 0d2891581..92bb689f2 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/IndexManagementExtension.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/IndexManagementExtension.kt @@ -27,9 +27,7 @@ interface IndexManagementExtension { * should represent if the extension is enabled or disabled, and should not represent extension health or the availability of some extension * dependency. */ - fun statusChecker(): StatusChecker { - return DefaultStatusChecker() - } + fun statusChecker(): StatusChecker = DefaultStatusChecker() /** * Name of the extension @@ -41,9 +39,7 @@ interface IndexManagementExtension { * indices provide the metadata service that can provide the index metadata for these indices. An extension need to label the metadata service * with a type string which is used to distinguish indices in IndexManagement plugin */ - fun getIndexMetadataService(): Map { - return mapOf() - } + fun getIndexMetadataService(): Map = mapOf() /** * Caution: Experimental and can be removed in future @@ -51,7 +47,5 @@ interface IndexManagementExtension { * If extension wants IndexManagement to determine cluster state indices UUID based on custom index setting if * present of cluster state override this method. */ - fun overrideClusterStateIndexUuidSetting(): String? { - return null - } + fun overrideClusterStateIndexUuidSetting(): String? = null } diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Action.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Action.kt index 6c010c2f3..b8940bdfb 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Action.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Action.kt @@ -20,7 +20,8 @@ import java.time.Instant abstract class Action( val type: String, val actionIndex: Int, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { var configTimeout: ActionTimeout? = null var configRetry: ActionRetry? = ActionRetry(DEFAULT_RETRIES) diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/StatusChecker.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/StatusChecker.kt index 2eeffec5b..1be2232b0 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/StatusChecker.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/StatusChecker.kt @@ -12,9 +12,7 @@ interface StatusChecker { /** * checks and returns the status of the extension */ - fun check(clusterState: ClusterState): Status { - return Status.ENABLED - } + fun check(clusterState: ClusterState): Status = Status.ENABLED } enum class Status(private val value: String) { @@ -22,9 +20,7 @@ enum class Status(private val value: String) { DISABLED("disabled"), ; - override fun toString(): String { - return value - } + override fun toString(): String = value } class DefaultStatusChecker : StatusChecker diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Step.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Step.kt index 9ff5c9fcb..3e4f9bb97 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Step.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Step.kt @@ -38,16 +38,14 @@ abstract class Step(val name: String, val isSafeToDisableOn: Boolean = true) { abstract fun isIdempotent(): Boolean - final fun getStepStartTime(metadata: ManagedIndexMetaData): Instant { - return when { - metadata.stepMetaData == null -> Instant.now() - metadata.stepMetaData.name != this.name -> Instant.now() - // The managed index metadata is a historical snapshot of the metadata and refers to what has happened from the previous - // execution, so if we ever see it as COMPLETED it means we are always going to be in a new step, this specifically - // helps with the Transition -> Transition (empty state) sequence which the above do not capture - metadata.stepMetaData.stepStatus == StepStatus.COMPLETED -> Instant.now() - else -> Instant.ofEpochMilli(metadata.stepMetaData.startTime) - } + final fun getStepStartTime(metadata: ManagedIndexMetaData): Instant = when { + metadata.stepMetaData == null -> Instant.now() + metadata.stepMetaData.name != this.name -> Instant.now() + // The managed index metadata is a historical snapshot of the metadata and refers to what has happened from the previous + // execution, so if we ever see it as COMPLETED it means we are always going to be in a new step, this specifically + // helps with the Transition -> Transition (empty state) sequence which the above do not capture + metadata.stepMetaData.stepStatus == StepStatus.COMPLETED -> Instant.now() + else -> Instant.ofEpochMilli(metadata.stepMetaData.startTime) } final fun getStartingStepMetaData(metadata: ManagedIndexMetaData): StepMetaData = StepMetaData(name, getStepStartTime(metadata).toEpochMilli(), StepStatus.STARTING) @@ -60,18 +58,14 @@ abstract class Step(val name: String, val isSafeToDisableOn: Boolean = true) { TIMED_OUT("timed_out"), ; - override fun toString(): String { - return status - } + override fun toString(): String = status override fun writeTo(out: StreamOutput) { out.writeString(status) } companion object { - fun read(streamInput: StreamInput): StepStatus { - return valueOf(streamInput.readString().uppercase(Locale.ROOT)) - } + fun read(streamInput: StreamInput): StepStatus = valueOf(streamInput.readString().uppercase(Locale.ROOT)) } } } diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Validate.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Validate.kt index 718731acd..a73240ac3 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Validate.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Validate.kt @@ -30,18 +30,14 @@ abstract class Validate( FAILED("failed"), ; - override fun toString(): String { - return status - } + override fun toString(): String = status override fun writeTo(out: StreamOutput) { out.writeString(status) } companion object { - fun read(streamInput: StreamInput): ValidationStatus { - return valueOf(streamInput.readString().uppercase(Locale.ROOT)) - } + fun read(streamInput: StreamInput): ValidationStatus = valueOf(streamInput.readString().uppercase(Locale.ROOT)) } } } diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionMetaData.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionMetaData.kt index b02e9ea5c..f78288286 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionMetaData.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionMetaData.kt @@ -30,7 +30,8 @@ data class ActionMetaData( val consumedRetries: Int, val lastRetryTime: Long?, val actionProperties: ActionProperties?, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeString(name) @@ -61,9 +62,7 @@ data class ActionMetaData( return builder } - fun getMapValueString(): String { - return Strings.toString(XContentType.JSON, this) - } + fun getMapValueString(): String = Strings.toString(XContentType.JSON, this) companion object { const val ACTION = "action" diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionProperties.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionProperties.kt index a8493f709..cc3fdeeb9 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionProperties.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionProperties.kt @@ -25,7 +25,8 @@ data class ActionProperties( val hasRollupFailed: Boolean? = null, val shrinkActionProperties: ShrinkActionProperties? = null, val transformActionProperties: TransformActionProperties? = null, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeOptionalInt(maxNumSegments) diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionRetry.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionRetry.kt index d2d16a560..429bf3b76 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionRetry.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionRetry.kt @@ -24,7 +24,8 @@ data class ActionRetry( val count: Long, val backoff: Backoff = Backoff.EXPONENTIAL, val delay: TimeValue = TimeValue.timeValueMinutes(1), -) : ToXContentFragment, Writeable { +) : ToXContentFragment, + Writeable { init { require(count >= 0) { "Count for ActionRetry must be a non-negative number" } @@ -110,9 +111,7 @@ data class ActionRetry( private val logger = LogManager.getLogger(javaClass) - override fun toString(): String { - return type - } + override fun toString(): String = type @Suppress("ReturnCount") fun shouldBackoff(actionMetaData: ActionMetaData?, actionRetry: ActionRetry?): Pair { diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionTimeout.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionTimeout.kt index c724b88fe..ca730e84c 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionTimeout.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ActionTimeout.kt @@ -15,11 +15,11 @@ import org.opensearch.core.xcontent.XContentBuilder import org.opensearch.core.xcontent.XContentParser import java.io.IOException -data class ActionTimeout(val timeout: TimeValue) : ToXContentFragment, Writeable { +data class ActionTimeout(val timeout: TimeValue) : + ToXContentFragment, + Writeable { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.field(TIMEOUT_FIELD, timeout.stringRep) - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.field(TIMEOUT_FIELD, timeout.stringRep) @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ManagedIndexMetaData.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ManagedIndexMetaData.kt index 5e23639e8..b7fad16f5 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ManagedIndexMetaData.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ManagedIndexMetaData.kt @@ -39,7 +39,8 @@ data class ManagedIndexMetaData( val seqNo: Long = SequenceNumbers.UNASSIGNED_SEQ_NO, val primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, val rolledOverIndexName: String? = null, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { @Suppress("ComplexMethod") fun toMap(): Map { @@ -324,24 +325,22 @@ data class ManagedIndexMetaData( return managedIndexMetaData } - fun fromMap(map: Map): ManagedIndexMetaData { - return ManagedIndexMetaData( - index = requireNotNull(map[INDEX]) { "$INDEX is null" }, - indexUuid = requireNotNull(map[INDEX_UUID]) { "$INDEX_UUID is null" }, - policyID = requireNotNull(map[POLICY_ID]) { "$POLICY_ID is null" }, - policySeqNo = map[POLICY_SEQ_NO]?.toLong(), - policyPrimaryTerm = map[POLICY_PRIMARY_TERM]?.toLong(), - policyCompleted = map[POLICY_COMPLETED]?.toBoolean(), - rolledOver = map[ROLLED_OVER]?.toBoolean(), - rolledOverIndexName = map[ROLLED_OVER_INDEX_NAME], - indexCreationDate = map[INDEX_CREATION_DATE]?.toLong(), - transitionTo = map[TRANSITION_TO], - stateMetaData = StateMetaData.fromManagedIndexMetaDataMap(map), - actionMetaData = ActionMetaData.fromManagedIndexMetaDataMap(map), - stepMetaData = StepMetaData.fromManagedIndexMetaDataMap(map), - policyRetryInfo = PolicyRetryInfoMetaData.fromManagedIndexMetaDataMap(map), - info = map[INFO]?.let { XContentHelper.convertToMap(JsonXContent.jsonXContent, it, false) }, - ) - } + fun fromMap(map: Map): ManagedIndexMetaData = ManagedIndexMetaData( + index = requireNotNull(map[INDEX]) { "$INDEX is null" }, + indexUuid = requireNotNull(map[INDEX_UUID]) { "$INDEX_UUID is null" }, + policyID = requireNotNull(map[POLICY_ID]) { "$POLICY_ID is null" }, + policySeqNo = map[POLICY_SEQ_NO]?.toLong(), + policyPrimaryTerm = map[POLICY_PRIMARY_TERM]?.toLong(), + policyCompleted = map[POLICY_COMPLETED]?.toBoolean(), + rolledOver = map[ROLLED_OVER]?.toBoolean(), + rolledOverIndexName = map[ROLLED_OVER_INDEX_NAME], + indexCreationDate = map[INDEX_CREATION_DATE]?.toLong(), + transitionTo = map[TRANSITION_TO], + stateMetaData = StateMetaData.fromManagedIndexMetaDataMap(map), + actionMetaData = ActionMetaData.fromManagedIndexMetaDataMap(map), + stepMetaData = StepMetaData.fromManagedIndexMetaDataMap(map), + policyRetryInfo = PolicyRetryInfoMetaData.fromManagedIndexMetaDataMap(map), + info = map[INFO]?.let { XContentHelper.convertToMap(JsonXContent.jsonXContent, it, false) }, + ) } } diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/PolicyRetryInfoMetaData.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/PolicyRetryInfoMetaData.kt index 64a0dcea5..54dd45a44 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/PolicyRetryInfoMetaData.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/PolicyRetryInfoMetaData.kt @@ -23,18 +23,17 @@ import java.nio.charset.StandardCharsets data class PolicyRetryInfoMetaData( val failed: Boolean, val consumedRetries: Int, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeBoolean(failed) out.writeInt(consumedRetries) } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder - .field(FAILED, failed) - .field(CONSUMED_RETRIES, consumedRetries) - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder + .field(FAILED, failed) + .field(CONSUMED_RETRIES, consumedRetries) fun getMapValueString(): String = Strings.toString(XContentType.JSON, this) diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ShrinkActionProperties.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ShrinkActionProperties.kt index 7d4426b06..0b40b02f6 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ShrinkActionProperties.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ShrinkActionProperties.kt @@ -24,7 +24,8 @@ data class ShrinkActionProperties( val lockDurationSecond: Long, // Used to store the original index allocation and write block setting to reapply after shrink val originalIndexSettings: Map, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeString(nodeName) diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StateMetaData.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StateMetaData.kt index e4fdfdfac..29affa24e 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StateMetaData.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StateMetaData.kt @@ -25,18 +25,17 @@ import java.nio.charset.StandardCharsets data class StateMetaData( val name: String, val startTime: Long, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeString(name) out.writeLong(startTime) } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder - .field(NAME, name) - .field(START_TIME, startTime) - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder + .field(NAME, name) + .field(START_TIME, startTime) fun getMapValueString(): String = Strings.toString(XContentType.JSON, this) diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepContext.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepContext.kt index e0cc84c64..a3fee91b3 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepContext.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepContext.kt @@ -23,7 +23,5 @@ class StepContext( val settings: Settings, val lockService: LockService, ) { - fun getUpdatedContext(metadata: ManagedIndexMetaData): StepContext { - return StepContext(metadata, this.clusterService, this.client, this.threadContext, this.user, this.scriptService, this.settings, this.lockService) - } + fun getUpdatedContext(metadata: ManagedIndexMetaData): StepContext = StepContext(metadata, this.clusterService, this.client, this.threadContext, this.user, this.scriptService, this.settings, this.lockService) } diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepMetaData.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepMetaData.kt index 85681accc..778099538 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepMetaData.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/StepMetaData.kt @@ -28,7 +28,8 @@ data class StepMetaData( val name: String, val startTime: Long, val stepStatus: Step.StepStatus, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeString(name) @@ -45,9 +46,7 @@ data class StepMetaData( return builder } - fun getMapValueString(): String { - return Strings.toString(XContentType.JSON, this) - } + fun getMapValueString(): String = Strings.toString(XContentType.JSON, this) companion object { const val STEP = "step" diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/TransformActionProperties.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/TransformActionProperties.kt index 300e379d3..c667c046c 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/TransformActionProperties.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/TransformActionProperties.kt @@ -16,7 +16,8 @@ import org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken data class TransformActionProperties( val transformId: String?, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeOptionalString(transformId) diff --git a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ValidationResult.kt b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ValidationResult.kt index 4bdd20ced..b2e086210 100644 --- a/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ValidationResult.kt +++ b/spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/model/ValidationResult.kt @@ -25,7 +25,8 @@ import java.util.Locale data class ValidationResult( val validationMessage: String, val validationStatus: Validate.ValidationStatus, -) : Writeable, ToXContentFragment { +) : Writeable, + ToXContentFragment { override fun writeTo(out: StreamOutput) { out.writeString(validationMessage) @@ -39,9 +40,7 @@ data class ValidationResult( return builder } - fun getMapValueString(): String { - return Strings.toString(XContentType.JSON, this) - } + fun getMapValueString(): String = Strings.toString(XContentType.JSON, this) companion object { const val VALIDATE = "validate" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt b/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt index 9c79fb9e2..0f6e0a0f7 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt @@ -200,7 +200,13 @@ import org.opensearch.watcher.ResourceWatcherService import java.util.function.Supplier @Suppress("TooManyFunctions") -class IndexManagementPlugin : JobSchedulerExtension, NetworkPlugin, ActionPlugin, ExtensiblePlugin, SystemIndexPlugin, Plugin() { +class IndexManagementPlugin : + Plugin(), + JobSchedulerExtension, + NetworkPlugin, + ActionPlugin, + ExtensiblePlugin, + SystemIndexPlugin { private val logger = LogManager.getLogger(javaClass) lateinit var indexManagementIndices: IndexManagementIndices @@ -247,9 +253,7 @@ class IndexManagementPlugin : JobSchedulerExtension, NetworkPlugin, ActionPlugin override fun getJobRunner(): ScheduledJobRunner = IndexManagementRunner - override fun getGuiceServiceClasses(): Collection> { - return mutableListOf>(GuiceHolder::class.java) - } + override fun getGuiceServiceClasses(): Collection> = mutableListOf>(GuiceHolder::class.java) @Suppress("ComplexMethod") override fun getJobParser(): ScheduledJobParser { @@ -329,42 +333,40 @@ class IndexManagementPlugin : JobSchedulerExtension, NetworkPlugin, ActionPlugin settingsFilter: SettingsFilter, indexNameExpressionResolver: IndexNameExpressionResolver, nodesInCluster: Supplier, - ): List { - return listOf( - RestRefreshSearchAnalyzerAction(), - RestIndexPolicyAction(settings, clusterService), - RestGetPolicyAction(), - RestDeletePolicyAction(), - RestExplainAction(), - RestRetryFailedManagedIndexAction(), - RestAddPolicyAction(), - RestRemovePolicyAction(), - RestChangePolicyAction(), - RestDeleteRollupAction(), - RestGetRollupAction(), - RestIndexRollupAction(), - RestStartRollupAction(), - RestStopRollupAction(), - RestExplainRollupAction(), - RestIndexTransformAction(), - RestGetTransformAction(), - RestPreviewTransformAction(), - RestDeleteTransformAction(), - RestExplainTransformAction(), - RestStartTransformAction(), - RestStopTransformAction(), - RestGetSMPolicyHandler(), - RestStartSMPolicyHandler(), - RestStopSMPolicyHandler(), - RestExplainSMPolicyHandler(), - RestDeleteSMPolicyHandler(), - RestCreateSMPolicyHandler(), - RestUpdateSMPolicyHandler(), - RestIndexLRONConfigAction(), - RestGetLRONConfigAction(), - RestDeleteLRONConfigAction(), - ) - } + ): List = listOf( + RestRefreshSearchAnalyzerAction(), + RestIndexPolicyAction(settings, clusterService), + RestGetPolicyAction(), + RestDeletePolicyAction(), + RestExplainAction(), + RestRetryFailedManagedIndexAction(), + RestAddPolicyAction(), + RestRemovePolicyAction(), + RestChangePolicyAction(), + RestDeleteRollupAction(), + RestGetRollupAction(), + RestIndexRollupAction(), + RestStartRollupAction(), + RestStopRollupAction(), + RestExplainRollupAction(), + RestIndexTransformAction(), + RestGetTransformAction(), + RestPreviewTransformAction(), + RestDeleteTransformAction(), + RestExplainTransformAction(), + RestStartTransformAction(), + RestStopTransformAction(), + RestGetSMPolicyHandler(), + RestStartSMPolicyHandler(), + RestStopSMPolicyHandler(), + RestExplainSMPolicyHandler(), + RestDeleteSMPolicyHandler(), + RestCreateSMPolicyHandler(), + RestUpdateSMPolicyHandler(), + RestIndexLRONConfigAction(), + RestGetLRONConfigAction(), + RestDeleteLRONConfigAction(), + ) @Suppress("LongMethod") override fun createComponents( @@ -491,156 +493,147 @@ class IndexManagementPlugin : JobSchedulerExtension, NetworkPlugin, ActionPlugin } @Suppress("LongMethod") - override fun getSettings(): List> { - return listOf( - ManagedIndexSettings.HISTORY_ENABLED, - ManagedIndexSettings.HISTORY_INDEX_MAX_AGE, - ManagedIndexSettings.HISTORY_MAX_DOCS, - ManagedIndexSettings.HISTORY_RETENTION_PERIOD, - ManagedIndexSettings.HISTORY_ROLLOVER_CHECK_PERIOD, - ManagedIndexSettings.HISTORY_NUMBER_OF_SHARDS, - ManagedIndexSettings.HISTORY_NUMBER_OF_REPLICAS, - ManagedIndexSettings.POLICY_ID, - ManagedIndexSettings.ROLLOVER_ALIAS, - ManagedIndexSettings.ROLLOVER_SKIP, - ManagedIndexSettings.INDEX_STATE_MANAGEMENT_ENABLED, - ManagedIndexSettings.ACTION_VALIDATION_ENABLED, - ManagedIndexSettings.METADATA_SERVICE_ENABLED, - ManagedIndexSettings.AUTO_MANAGE, - ManagedIndexSettings.METADATA_SERVICE_STATUS, - ManagedIndexSettings.TEMPLATE_MIGRATION_CONTROL, - ManagedIndexSettings.JITTER, - ManagedIndexSettings.JOB_INTERVAL, - ManagedIndexSettings.SWEEP_PERIOD, - ManagedIndexSettings.SWEEP_SKIP_PERIOD, - ManagedIndexSettings.COORDINATOR_BACKOFF_COUNT, - ManagedIndexSettings.COORDINATOR_BACKOFF_MILLIS, - ManagedIndexSettings.ALLOW_LIST, - ManagedIndexSettings.SNAPSHOT_DENY_LIST, - ManagedIndexSettings.RESTRICTED_INDEX_PATTERN, - RollupSettings.ROLLUP_INGEST_BACKOFF_COUNT, - RollupSettings.ROLLUP_INGEST_BACKOFF_MILLIS, - RollupSettings.ROLLUP_SEARCH_BACKOFF_COUNT, - RollupSettings.ROLLUP_SEARCH_BACKOFF_MILLIS, - RollupSettings.ROLLUP_INDEX, - RollupSettings.ROLLUP_ENABLED, - RollupSettings.ROLLUP_SEARCH_ENABLED, - RollupSettings.ROLLUP_DASHBOARDS, - RollupSettings.ROLLUP_SEARCH_ALL_JOBS, - TransformSettings.TRANSFORM_JOB_INDEX_BACKOFF_COUNT, - TransformSettings.TRANSFORM_JOB_INDEX_BACKOFF_MILLIS, - TransformSettings.TRANSFORM_JOB_SEARCH_BACKOFF_COUNT, - TransformSettings.TRANSFORM_JOB_SEARCH_BACKOFF_MILLIS, - TransformSettings.TRANSFORM_CIRCUIT_BREAKER_ENABLED, - TransformSettings.TRANSFORM_CIRCUIT_BREAKER_JVM_THRESHOLD, - IndexManagementSettings.FILTER_BY_BACKEND_ROLES, - LegacyOpenDistroManagedIndexSettings.HISTORY_ENABLED, - LegacyOpenDistroManagedIndexSettings.HISTORY_INDEX_MAX_AGE, - LegacyOpenDistroManagedIndexSettings.HISTORY_MAX_DOCS, - LegacyOpenDistroManagedIndexSettings.HISTORY_RETENTION_PERIOD, - LegacyOpenDistroManagedIndexSettings.HISTORY_ROLLOVER_CHECK_PERIOD, - LegacyOpenDistroManagedIndexSettings.HISTORY_NUMBER_OF_SHARDS, - LegacyOpenDistroManagedIndexSettings.HISTORY_NUMBER_OF_REPLICAS, - LegacyOpenDistroManagedIndexSettings.POLICY_ID, - LegacyOpenDistroManagedIndexSettings.ROLLOVER_ALIAS, - LegacyOpenDistroManagedIndexSettings.ROLLOVER_SKIP, - LegacyOpenDistroManagedIndexSettings.INDEX_STATE_MANAGEMENT_ENABLED, - LegacyOpenDistroManagedIndexSettings.METADATA_SERVICE_ENABLED, - LegacyOpenDistroManagedIndexSettings.JOB_INTERVAL, - LegacyOpenDistroManagedIndexSettings.SWEEP_PERIOD, - LegacyOpenDistroManagedIndexSettings.COORDINATOR_BACKOFF_COUNT, - LegacyOpenDistroManagedIndexSettings.COORDINATOR_BACKOFF_MILLIS, - LegacyOpenDistroManagedIndexSettings.ALLOW_LIST, - LegacyOpenDistroManagedIndexSettings.SNAPSHOT_DENY_LIST, - LegacyOpenDistroManagedIndexSettings.AUTO_MANAGE, - LegacyOpenDistroManagedIndexSettings.METADATA_SERVICE_STATUS, - LegacyOpenDistroManagedIndexSettings.TEMPLATE_MIGRATION_CONTROL, - LegacyOpenDistroManagedIndexSettings.RESTRICTED_INDEX_PATTERN, - LegacyOpenDistroRollupSettings.ROLLUP_INGEST_BACKOFF_COUNT, - LegacyOpenDistroRollupSettings.ROLLUP_INGEST_BACKOFF_MILLIS, - LegacyOpenDistroRollupSettings.ROLLUP_SEARCH_BACKOFF_COUNT, - LegacyOpenDistroRollupSettings.ROLLUP_SEARCH_BACKOFF_MILLIS, - LegacyOpenDistroRollupSettings.ROLLUP_INDEX, - LegacyOpenDistroRollupSettings.ROLLUP_ENABLED, - LegacyOpenDistroRollupSettings.ROLLUP_SEARCH_ENABLED, - LegacyOpenDistroRollupSettings.ROLLUP_DASHBOARDS, - SnapshotManagementSettings.FILTER_BY_BACKEND_ROLES, - ) - } - - override fun getActions(): List> { - return listOf( - ActionPlugin.ActionHandler(UpdateManagedIndexMetaDataAction.INSTANCE, TransportUpdateManagedIndexMetaDataAction::class.java), - ActionPlugin.ActionHandler(RemovePolicyAction.INSTANCE, TransportRemovePolicyAction::class.java), - ActionPlugin.ActionHandler(RefreshSearchAnalyzerAction.INSTANCE, TransportRefreshSearchAnalyzerAction::class.java), - ActionPlugin.ActionHandler(AddPolicyAction.INSTANCE, TransportAddPolicyAction::class.java), - ActionPlugin.ActionHandler(RetryFailedManagedIndexAction.INSTANCE, TransportRetryFailedManagedIndexAction::class.java), - ActionPlugin.ActionHandler(ChangePolicyAction.INSTANCE, TransportChangePolicyAction::class.java), - ActionPlugin.ActionHandler(IndexPolicyAction.INSTANCE, TransportIndexPolicyAction::class.java), - ActionPlugin.ActionHandler(ExplainAction.INSTANCE, TransportExplainAction::class.java), - ActionPlugin.ActionHandler(DeletePolicyAction.INSTANCE, TransportDeletePolicyAction::class.java), - ActionPlugin.ActionHandler(GetPolicyAction.INSTANCE, TransportGetPolicyAction::class.java), - ActionPlugin.ActionHandler(GetPoliciesAction.INSTANCE, TransportGetPoliciesAction::class.java), - ActionPlugin.ActionHandler(DeleteRollupAction.INSTANCE, TransportDeleteRollupAction::class.java), - ActionPlugin.ActionHandler(GetRollupAction.INSTANCE, TransportGetRollupAction::class.java), - ActionPlugin.ActionHandler(GetRollupsAction.INSTANCE, TransportGetRollupsAction::class.java), - ActionPlugin.ActionHandler(IndexRollupAction.INSTANCE, TransportIndexRollupAction::class.java), - ActionPlugin.ActionHandler(StartRollupAction.INSTANCE, TransportStartRollupAction::class.java), - ActionPlugin.ActionHandler(StopRollupAction.INSTANCE, TransportStopRollupAction::class.java), - ActionPlugin.ActionHandler(ExplainRollupAction.INSTANCE, TransportExplainRollupAction::class.java), - ActionPlugin.ActionHandler(UpdateRollupMappingAction.INSTANCE, TransportUpdateRollupMappingAction::class.java), - ActionPlugin.ActionHandler(IndexTransformAction.INSTANCE, TransportIndexTransformAction::class.java), - ActionPlugin.ActionHandler(GetTransformAction.INSTANCE, TransportGetTransformAction::class.java), - ActionPlugin.ActionHandler(GetTransformsAction.INSTANCE, TransportGetTransformsAction::class.java), - ActionPlugin.ActionHandler(PreviewTransformAction.INSTANCE, TransportPreviewTransformAction::class.java), - ActionPlugin.ActionHandler(DeleteTransformsAction.INSTANCE, TransportDeleteTransformsAction::class.java), - ActionPlugin.ActionHandler(ExplainTransformAction.INSTANCE, TransportExplainTransformAction::class.java), - ActionPlugin.ActionHandler(StartTransformAction.INSTANCE, TransportStartTransformAction::class.java), - ActionPlugin.ActionHandler(StopTransformAction.INSTANCE, TransportStopTransformAction::class.java), - ActionPlugin.ActionHandler(ManagedIndexAction.INSTANCE, TransportManagedIndexAction::class.java), - ActionPlugin.ActionHandler(SMActions.INDEX_SM_POLICY_ACTION_TYPE, TransportIndexSMPolicyAction::class.java), - ActionPlugin.ActionHandler(SMActions.GET_SM_POLICY_ACTION_TYPE, TransportGetSMPolicyAction::class.java), - ActionPlugin.ActionHandler(SMActions.DELETE_SM_POLICY_ACTION_TYPE, TransportDeleteSMPolicyAction::class.java), - ActionPlugin.ActionHandler(SMActions.START_SM_POLICY_ACTION_TYPE, TransportStartSMAction::class.java), - ActionPlugin.ActionHandler(SMActions.STOP_SM_POLICY_ACTION_TYPE, TransportStopSMAction::class.java), - ActionPlugin.ActionHandler(SMActions.EXPLAIN_SM_POLICY_ACTION_TYPE, TransportExplainSMAction::class.java), - ActionPlugin.ActionHandler(SMActions.GET_SM_POLICIES_ACTION_TYPE, TransportGetSMPoliciesAction::class.java), - ActionPlugin.ActionHandler(IndexLRONConfigAction.INSTANCE, TransportIndexLRONConfigAction::class.java), - ActionPlugin.ActionHandler(GetLRONConfigAction.INSTANCE, TransportGetLRONConfigAction::class.java), - ActionPlugin.ActionHandler(DeleteLRONConfigAction.INSTANCE, TransportDeleteLRONConfigAction::class.java), - ) - } - - override fun getTransportInterceptors(namedWriteableRegistry: NamedWriteableRegistry, threadContext: ThreadContext): List { - return listOf(rollupInterceptor) - } - - override fun getActionFilters(): List { - return listOf(fieldCapsFilter, indexOperationActionFilter) - } - - override fun getSystemIndexDescriptors(settings: Settings): Collection { - return listOf( - SystemIndexDescriptor( - INDEX_MANAGEMENT_INDEX, - "Index for storing index management configuration and metadata.", - ), - SystemIndexDescriptor( - CONTROL_CENTER_INDEX, - "Index for storing notification policy of long running index operations.", - ), - - ) - } + override fun getSettings(): List> = listOf( + ManagedIndexSettings.HISTORY_ENABLED, + ManagedIndexSettings.HISTORY_INDEX_MAX_AGE, + ManagedIndexSettings.HISTORY_MAX_DOCS, + ManagedIndexSettings.HISTORY_RETENTION_PERIOD, + ManagedIndexSettings.HISTORY_ROLLOVER_CHECK_PERIOD, + ManagedIndexSettings.HISTORY_NUMBER_OF_SHARDS, + ManagedIndexSettings.HISTORY_NUMBER_OF_REPLICAS, + ManagedIndexSettings.POLICY_ID, + ManagedIndexSettings.ROLLOVER_ALIAS, + ManagedIndexSettings.ROLLOVER_SKIP, + ManagedIndexSettings.INDEX_STATE_MANAGEMENT_ENABLED, + ManagedIndexSettings.ACTION_VALIDATION_ENABLED, + ManagedIndexSettings.METADATA_SERVICE_ENABLED, + ManagedIndexSettings.AUTO_MANAGE, + ManagedIndexSettings.METADATA_SERVICE_STATUS, + ManagedIndexSettings.TEMPLATE_MIGRATION_CONTROL, + ManagedIndexSettings.JITTER, + ManagedIndexSettings.JOB_INTERVAL, + ManagedIndexSettings.SWEEP_PERIOD, + ManagedIndexSettings.SWEEP_SKIP_PERIOD, + ManagedIndexSettings.COORDINATOR_BACKOFF_COUNT, + ManagedIndexSettings.COORDINATOR_BACKOFF_MILLIS, + ManagedIndexSettings.ALLOW_LIST, + ManagedIndexSettings.SNAPSHOT_DENY_LIST, + ManagedIndexSettings.RESTRICTED_INDEX_PATTERN, + RollupSettings.ROLLUP_INGEST_BACKOFF_COUNT, + RollupSettings.ROLLUP_INGEST_BACKOFF_MILLIS, + RollupSettings.ROLLUP_SEARCH_BACKOFF_COUNT, + RollupSettings.ROLLUP_SEARCH_BACKOFF_MILLIS, + RollupSettings.ROLLUP_INDEX, + RollupSettings.ROLLUP_ENABLED, + RollupSettings.ROLLUP_SEARCH_ENABLED, + RollupSettings.ROLLUP_DASHBOARDS, + RollupSettings.ROLLUP_SEARCH_ALL_JOBS, + TransformSettings.TRANSFORM_JOB_INDEX_BACKOFF_COUNT, + TransformSettings.TRANSFORM_JOB_INDEX_BACKOFF_MILLIS, + TransformSettings.TRANSFORM_JOB_SEARCH_BACKOFF_COUNT, + TransformSettings.TRANSFORM_JOB_SEARCH_BACKOFF_MILLIS, + TransformSettings.TRANSFORM_CIRCUIT_BREAKER_ENABLED, + TransformSettings.TRANSFORM_CIRCUIT_BREAKER_JVM_THRESHOLD, + IndexManagementSettings.FILTER_BY_BACKEND_ROLES, + LegacyOpenDistroManagedIndexSettings.HISTORY_ENABLED, + LegacyOpenDistroManagedIndexSettings.HISTORY_INDEX_MAX_AGE, + LegacyOpenDistroManagedIndexSettings.HISTORY_MAX_DOCS, + LegacyOpenDistroManagedIndexSettings.HISTORY_RETENTION_PERIOD, + LegacyOpenDistroManagedIndexSettings.HISTORY_ROLLOVER_CHECK_PERIOD, + LegacyOpenDistroManagedIndexSettings.HISTORY_NUMBER_OF_SHARDS, + LegacyOpenDistroManagedIndexSettings.HISTORY_NUMBER_OF_REPLICAS, + LegacyOpenDistroManagedIndexSettings.POLICY_ID, + LegacyOpenDistroManagedIndexSettings.ROLLOVER_ALIAS, + LegacyOpenDistroManagedIndexSettings.ROLLOVER_SKIP, + LegacyOpenDistroManagedIndexSettings.INDEX_STATE_MANAGEMENT_ENABLED, + LegacyOpenDistroManagedIndexSettings.METADATA_SERVICE_ENABLED, + LegacyOpenDistroManagedIndexSettings.JOB_INTERVAL, + LegacyOpenDistroManagedIndexSettings.SWEEP_PERIOD, + LegacyOpenDistroManagedIndexSettings.COORDINATOR_BACKOFF_COUNT, + LegacyOpenDistroManagedIndexSettings.COORDINATOR_BACKOFF_MILLIS, + LegacyOpenDistroManagedIndexSettings.ALLOW_LIST, + LegacyOpenDistroManagedIndexSettings.SNAPSHOT_DENY_LIST, + LegacyOpenDistroManagedIndexSettings.AUTO_MANAGE, + LegacyOpenDistroManagedIndexSettings.METADATA_SERVICE_STATUS, + LegacyOpenDistroManagedIndexSettings.TEMPLATE_MIGRATION_CONTROL, + LegacyOpenDistroManagedIndexSettings.RESTRICTED_INDEX_PATTERN, + LegacyOpenDistroRollupSettings.ROLLUP_INGEST_BACKOFF_COUNT, + LegacyOpenDistroRollupSettings.ROLLUP_INGEST_BACKOFF_MILLIS, + LegacyOpenDistroRollupSettings.ROLLUP_SEARCH_BACKOFF_COUNT, + LegacyOpenDistroRollupSettings.ROLLUP_SEARCH_BACKOFF_MILLIS, + LegacyOpenDistroRollupSettings.ROLLUP_INDEX, + LegacyOpenDistroRollupSettings.ROLLUP_ENABLED, + LegacyOpenDistroRollupSettings.ROLLUP_SEARCH_ENABLED, + LegacyOpenDistroRollupSettings.ROLLUP_DASHBOARDS, + SnapshotManagementSettings.FILTER_BY_BACKEND_ROLES, + ) + + override fun getActions(): List> = listOf( + ActionPlugin.ActionHandler(UpdateManagedIndexMetaDataAction.INSTANCE, TransportUpdateManagedIndexMetaDataAction::class.java), + ActionPlugin.ActionHandler(RemovePolicyAction.INSTANCE, TransportRemovePolicyAction::class.java), + ActionPlugin.ActionHandler(RefreshSearchAnalyzerAction.INSTANCE, TransportRefreshSearchAnalyzerAction::class.java), + ActionPlugin.ActionHandler(AddPolicyAction.INSTANCE, TransportAddPolicyAction::class.java), + ActionPlugin.ActionHandler(RetryFailedManagedIndexAction.INSTANCE, TransportRetryFailedManagedIndexAction::class.java), + ActionPlugin.ActionHandler(ChangePolicyAction.INSTANCE, TransportChangePolicyAction::class.java), + ActionPlugin.ActionHandler(IndexPolicyAction.INSTANCE, TransportIndexPolicyAction::class.java), + ActionPlugin.ActionHandler(ExplainAction.INSTANCE, TransportExplainAction::class.java), + ActionPlugin.ActionHandler(DeletePolicyAction.INSTANCE, TransportDeletePolicyAction::class.java), + ActionPlugin.ActionHandler(GetPolicyAction.INSTANCE, TransportGetPolicyAction::class.java), + ActionPlugin.ActionHandler(GetPoliciesAction.INSTANCE, TransportGetPoliciesAction::class.java), + ActionPlugin.ActionHandler(DeleteRollupAction.INSTANCE, TransportDeleteRollupAction::class.java), + ActionPlugin.ActionHandler(GetRollupAction.INSTANCE, TransportGetRollupAction::class.java), + ActionPlugin.ActionHandler(GetRollupsAction.INSTANCE, TransportGetRollupsAction::class.java), + ActionPlugin.ActionHandler(IndexRollupAction.INSTANCE, TransportIndexRollupAction::class.java), + ActionPlugin.ActionHandler(StartRollupAction.INSTANCE, TransportStartRollupAction::class.java), + ActionPlugin.ActionHandler(StopRollupAction.INSTANCE, TransportStopRollupAction::class.java), + ActionPlugin.ActionHandler(ExplainRollupAction.INSTANCE, TransportExplainRollupAction::class.java), + ActionPlugin.ActionHandler(UpdateRollupMappingAction.INSTANCE, TransportUpdateRollupMappingAction::class.java), + ActionPlugin.ActionHandler(IndexTransformAction.INSTANCE, TransportIndexTransformAction::class.java), + ActionPlugin.ActionHandler(GetTransformAction.INSTANCE, TransportGetTransformAction::class.java), + ActionPlugin.ActionHandler(GetTransformsAction.INSTANCE, TransportGetTransformsAction::class.java), + ActionPlugin.ActionHandler(PreviewTransformAction.INSTANCE, TransportPreviewTransformAction::class.java), + ActionPlugin.ActionHandler(DeleteTransformsAction.INSTANCE, TransportDeleteTransformsAction::class.java), + ActionPlugin.ActionHandler(ExplainTransformAction.INSTANCE, TransportExplainTransformAction::class.java), + ActionPlugin.ActionHandler(StartTransformAction.INSTANCE, TransportStartTransformAction::class.java), + ActionPlugin.ActionHandler(StopTransformAction.INSTANCE, TransportStopTransformAction::class.java), + ActionPlugin.ActionHandler(ManagedIndexAction.INSTANCE, TransportManagedIndexAction::class.java), + ActionPlugin.ActionHandler(SMActions.INDEX_SM_POLICY_ACTION_TYPE, TransportIndexSMPolicyAction::class.java), + ActionPlugin.ActionHandler(SMActions.GET_SM_POLICY_ACTION_TYPE, TransportGetSMPolicyAction::class.java), + ActionPlugin.ActionHandler(SMActions.DELETE_SM_POLICY_ACTION_TYPE, TransportDeleteSMPolicyAction::class.java), + ActionPlugin.ActionHandler(SMActions.START_SM_POLICY_ACTION_TYPE, TransportStartSMAction::class.java), + ActionPlugin.ActionHandler(SMActions.STOP_SM_POLICY_ACTION_TYPE, TransportStopSMAction::class.java), + ActionPlugin.ActionHandler(SMActions.EXPLAIN_SM_POLICY_ACTION_TYPE, TransportExplainSMAction::class.java), + ActionPlugin.ActionHandler(SMActions.GET_SM_POLICIES_ACTION_TYPE, TransportGetSMPoliciesAction::class.java), + ActionPlugin.ActionHandler(IndexLRONConfigAction.INSTANCE, TransportIndexLRONConfigAction::class.java), + ActionPlugin.ActionHandler(GetLRONConfigAction.INSTANCE, TransportGetLRONConfigAction::class.java), + ActionPlugin.ActionHandler(DeleteLRONConfigAction.INSTANCE, TransportDeleteLRONConfigAction::class.java), + ) + + override fun getTransportInterceptors( + namedWriteableRegistry: NamedWriteableRegistry, + threadContext: ThreadContext, + ): List = listOf(rollupInterceptor) + + override fun getActionFilters(): List = listOf(fieldCapsFilter, indexOperationActionFilter) + + override fun getSystemIndexDescriptors(settings: Settings): Collection = listOf( + SystemIndexDescriptor( + INDEX_MANAGEMENT_INDEX, + "Index for storing index management configuration and metadata.", + ), + SystemIndexDescriptor( + CONTROL_CENTER_INDEX, + "Index for storing notification policy of long running index operations.", + ), + + ) } class GuiceHolder @Inject constructor( remoteClusterService: TransportService, ) : LifecycleComponent { override fun close() { /* do nothing */ } - override fun lifecycleState(): Lifecycle.State? { - return null - } + override fun lifecycleState(): Lifecycle.State? = null override fun addLifecycleListener(listener: LifecycleListener) { /* do nothing */ } override fun removeLifecycleListener(listener: LifecycleListener) { /* do nothing */ } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Dimension.kt b/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Dimension.kt index 3f4fe21a0..59e305501 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Dimension.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Dimension.kt @@ -18,16 +18,15 @@ abstract class Dimension( val type: Type, open val sourceField: String, open val targetField: String, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { enum class Type(val type: String) { DATE_HISTOGRAM("date_histogram"), TERMS("terms"), HISTOGRAM("histogram"), ; - override fun toString(): String { - return type - } + override fun toString(): String = type } abstract fun toSourceBuilder(appendType: Boolean = false): CompositeValuesSourceBuilder<*> diff --git a/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Histogram.kt b/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Histogram.kt index ebdc55add..6f3fdfda0 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Histogram.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Histogram.kt @@ -41,15 +41,13 @@ data class Histogram( interval = sin.readDouble(), ) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .startObject(type.type) - .field(DIMENSION_SOURCE_FIELD_FIELD, sourceField) - .field(DIMENSION_TARGET_FIELD_FIELD, targetField) - .field(HISTOGRAM_INTERVAL_FIELD, interval) - .endObject() - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .startObject(type.type) + .field(DIMENSION_SOURCE_FIELD_FIELD, sourceField) + .field(DIMENSION_TARGET_FIELD_FIELD, targetField) + .field(HISTOGRAM_INTERVAL_FIELD, interval) + .endObject() + .endObject() override fun writeTo(out: StreamOutput) { out.writeString(sourceField) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Terms.kt b/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Terms.kt index da085b68d..1741af0aa 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Terms.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/common/model/dimension/Terms.kt @@ -36,14 +36,12 @@ data class Terms( targetField = sin.readString(), ) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .startObject(type.type) - .field(DIMENSION_SOURCE_FIELD_FIELD, sourceField) - .field(DIMENSION_TARGET_FIELD_FIELD, targetField) - .endObject() - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .startObject(type.type) + .field(DIMENSION_SOURCE_FIELD_FIELD, sourceField) + .field(DIMENSION_TARGET_FIELD_FIELD, targetField) + .endObject() + .endObject() override fun writeTo(out: StreamOutput) { out.writeString(sourceField) @@ -57,9 +55,7 @@ data class Terms( .field(this.sourceField) } - override fun toBucketQuery(bucketKey: Any): AbstractQueryBuilder<*> { - return TermsQueryBuilder(sourceField, bucketKey) - } + override fun toBucketQuery(bucketKey: Any): AbstractQueryBuilder<*> = TermsQueryBuilder(sourceField, bucketKey) override fun canBeRealizedInMappings(mappings: Map): Boolean { val fieldType = getFieldFromMappings(sourceField, mappings)?.get("type") ?: return false diff --git a/src/main/kotlin/org/opensearch/indexmanagement/common/model/notification/Channel.kt b/src/main/kotlin/org/opensearch/indexmanagement/common/model/notification/Channel.kt index 4d4a3b32e..7aa3dce59 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/common/model/notification/Channel.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/common/model/notification/Channel.kt @@ -24,17 +24,17 @@ import org.opensearch.indexmanagement.opensearchapi.suspendUntil import org.opensearch.indexmanagement.util.SecurityUtils.Companion.generateUserString import java.io.IOException -data class Channel(val id: String) : ToXContent, Writeable { +data class Channel(val id: String) : + ToXContent, + Writeable { init { require(id.isNotEmpty()) { "Channel ID cannot be empty" } } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(ID, id) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(ID, id) + .endObject() @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/common/model/rest/SearchParams.kt b/src/main/kotlin/org/opensearch/indexmanagement/common/model/rest/SearchParams.kt index a42bc9dde..10a237732 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/common/model/rest/SearchParams.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/common/model/rest/SearchParams.kt @@ -45,9 +45,7 @@ data class SearchParams( out.writeString(queryString) } - fun getSortBuilder(): FieldSortBuilder { - return SortBuilders - .fieldSort(this.sortField) - .order(SortOrder.fromString(this.sortOrder)) - } + fun getSortBuilder(): FieldSortBuilder = SortBuilders + .fieldSort(this.sortField) + .order(SortOrder.fromString(this.sortOrder)) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigResponse.kt index 76cba4380..60d4b9d27 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigResponse.kt @@ -21,7 +21,8 @@ import java.io.IOException class LRONConfigResponse( val id: String, val lronConfig: LRONConfig, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { @Throws(IOException::class) constructor(sin: StreamInput) : this( id = sin.readString(), diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/get/GetLRONConfigResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/get/GetLRONConfigResponse.kt index d59308418..1f3c0fc59 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/get/GetLRONConfigResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/get/GetLRONConfigResponse.kt @@ -20,7 +20,8 @@ import java.io.IOException class GetLRONConfigResponse( val lronConfigResponses: List, val totalNumber: Int, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { @Throws(IOException::class) constructor(sin: StreamInput) : this( lronConfigResponses = sin.readList(::LRONConfigResponse), diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/index/IndexLRONConfigAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/index/IndexLRONConfigAction.kt index ae3f9c6e3..608bbc8eb 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/index/IndexLRONConfigAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/action/index/IndexLRONConfigAction.kt @@ -8,8 +8,7 @@ package org.opensearch.indexmanagement.controlcenter.notification.action.index import org.opensearch.action.ActionType import org.opensearch.indexmanagement.controlcenter.notification.LRONConfigResponse -class IndexLRONConfigAction private constructor() : - ActionType(NAME, ::LRONConfigResponse) { +class IndexLRONConfigAction private constructor() : ActionType(NAME, ::LRONConfigResponse) { companion object { val INSTANCE = IndexLRONConfigAction() const val NAME = "cluster:admin/opensearch/controlcenter/lron/write" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/NotificationActionListener.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/NotificationActionListener.kt index 3c2a621e0..f843daa78 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/NotificationActionListener.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/NotificationActionListener.kt @@ -293,9 +293,7 @@ class NotificationActionListener { +class ForceMergeIndexRespParser(val request: ForceMergeRequest, val clusterService: ClusterService) : ResponseParser { private val indexNameWithCluster = getIndexName(request, clusterService) @@ -61,20 +60,18 @@ class ForceMergeIndexRespParser(val request: ForceMergeRequest, val clusterServi response: ForceMergeResponse?, exception: Exception?, isTimeout: Boolean, - ): String { - return if (exception != null) { - if (exception is OpenSearchException) { - "index [" + exception.index.name + "] ${exception.message}." - } else { - exception.message ?: "" - } - } else if (response != null && !response.shardFailures.isNullOrEmpty()) { - response.shardFailures.joinToString(",") { "index [${it.index()}] shard [${it.shardId()}] ${it.reason()}" } - } else if (request.indices().size == 1) { - "The force merge operation on $indexNameWithCluster ${NotificationActionListener.COMPLETED}" + ): String = if (exception != null) { + if (exception is OpenSearchException) { + "index [" + exception.index.name + "] ${exception.message}." } else { - "$indexNameWithCluster have been merged." + exception.message ?: "" } + } else if (response != null && !response.shardFailures.isNullOrEmpty()) { + response.shardFailures.joinToString(",") { "index [${it.index()}] shard [${it.shardId()}] ${it.reason()}" } + } else if (request.indices().size == 1) { + "The force merge operation on $indexNameWithCluster ${NotificationActionListener.COMPLETED}" + } else { + "$indexNameWithCluster have been merged." } override fun buildNotificationTitle(operationResult: OperationResult): String { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ReindexRespParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ReindexRespParser.kt index 393a86eee..49f0756f7 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ReindexRespParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ReindexRespParser.kt @@ -118,7 +118,6 @@ class ReindexRespParser( return result.toString() } - override fun buildNotificationTitle(operationResult: OperationResult): String { - return "Reindex operation on $sourceIndex has ${getOperationResultTitleDesc(operationResult)}" - } + override fun buildNotificationTitle(operationResult: OperationResult): String = + "Reindex operation on $sourceIndex has ${getOperationResultTitleDesc(operationResult)}" } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ResponseParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ResponseParser.kt index 6644e3eca..9ba60b32d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ResponseParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/filter/parser/ResponseParser.kt @@ -57,12 +57,10 @@ interface ResponseParser { } } - fun getOperationResultTitleDesc(result: OperationResult): String { - return when (result) { - OperationResult.COMPLETE -> "completed" - OperationResult.FAILED -> "failed" - OperationResult.TIMEOUT -> "timed out" - OperationResult.CANCELLED -> "been cancelled" - } + fun getOperationResultTitleDesc(result: OperationResult): String = when (result) { + OperationResult.COMPLETE -> "completed" + OperationResult.FAILED -> "failed" + OperationResult.TIMEOUT -> "timed out" + OperationResult.CANCELLED -> "been cancelled" } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONCondition.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONCondition.kt index 68d6f265c..9275b4b82 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONCondition.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONCondition.kt @@ -20,18 +20,15 @@ import java.io.IOException data class LRONCondition( val success: Boolean = DEFAULT_ENABLED, val failure: Boolean = DEFAULT_ENABLED, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { - fun toXContent(builder: XContentBuilder): XContentBuilder { - return toXContent(builder, ToXContent.EMPTY_PARAMS) - } + fun toXContent(builder: XContentBuilder): XContentBuilder = toXContent(builder, ToXContent.EMPTY_PARAMS) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(SUCCESS_FIELD, success) - .field(FAILURE_FIELD, failure) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(SUCCESS_FIELD, success) + .field(FAILURE_FIELD, failure) + .endObject() @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -45,9 +42,7 @@ data class LRONCondition( out.writeBoolean(failure) } - fun isEnabled(): Boolean { - return success || failure - } + fun isEnabled(): Boolean = success || failure companion object { const val SUCCESS_FIELD = "success" @@ -63,9 +58,7 @@ data class LRONCondition( id: String = NO_ID, seqNo: Long = SequenceNumbers.UNASSIGNED_SEQ_NO, primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, - ): LRONCondition { - return parse(xcp) - } + ): LRONCondition = parse(xcp) @JvmStatic @Suppress("MaxLineLength", "ComplexMethod", "NestedBlockDepth") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONConfig.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONConfig.kt index 6338091ed..3470f5316 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONConfig.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/model/LRONConfig.kt @@ -32,7 +32,8 @@ data class LRONConfig( val channels: List?, val user: User?, val priority: Int?, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { validateTaskIdAndActionName(taskId, actionName) if (lronCondition.isEnabled()) { @@ -40,9 +41,7 @@ data class LRONConfig( } } - fun toXContent(builder: XContentBuilder): XContentBuilder { - return toXContent(builder, ToXContent.EMPTY_PARAMS) - } + fun toXContent(builder: XContentBuilder): XContentBuilder = toXContent(builder, ToXContent.EMPTY_PARAMS) override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { builder.startObject() @@ -118,9 +117,7 @@ data class LRONConfig( id: String = NO_ID, seqNo: Long = SequenceNumbers.UNASSIGNED_SEQ_NO, primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, - ): LRONConfig { - return parse(xcp) - } + ): LRONConfig = parse(xcp) @JvmStatic @Suppress("MaxLineLength", "ComplexMethod", "NestedBlockDepth") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestDeleteLRONConfigAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestDeleteLRONConfigAction.kt index b8eef8e1c..a95a2b260 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestDeleteLRONConfigAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestDeleteLRONConfigAction.kt @@ -16,15 +16,11 @@ import org.opensearch.rest.action.RestToXContentListener import java.io.IOException class RestDeleteLRONConfigAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - RestHandler.Route(RestRequest.Method.DELETE, "${IndexManagementPlugin.LRON_BASE_URI}/{id}"), - ) - } + override fun routes(): List = listOf( + RestHandler.Route(RestRequest.Method.DELETE, "${IndexManagementPlugin.LRON_BASE_URI}/{id}"), + ) - override fun getName(): String { - return "delete_lron_config_action" - } + override fun getName(): String = "delete_lron_config_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestGetLRONConfigAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestGetLRONConfigAction.kt index 514c96b7e..b06940911 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestGetLRONConfigAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestGetLRONConfigAction.kt @@ -18,16 +18,12 @@ import org.opensearch.rest.action.RestToXContentListener import java.io.IOException class RestGetLRONConfigAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - RestHandler.Route(RestRequest.Method.GET, IndexManagementPlugin.LRON_BASE_URI), - RestHandler.Route(RestRequest.Method.GET, "${IndexManagementPlugin.LRON_BASE_URI}/{id}"), - ) - } + override fun routes(): List = listOf( + RestHandler.Route(RestRequest.Method.GET, IndexManagementPlugin.LRON_BASE_URI), + RestHandler.Route(RestRequest.Method.GET, "${IndexManagementPlugin.LRON_BASE_URI}/{id}"), + ) - override fun getName(): String { - return "get_lron_config_action" - } + override fun getName(): String = "get_lron_config_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestIndexLRONConfigAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestIndexLRONConfigAction.kt index e92cab97b..4dd924d2f 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestIndexLRONConfigAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/RestIndexLRONConfigAction.kt @@ -22,16 +22,12 @@ import java.io.IOException class RestIndexLRONConfigAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - RestHandler.Route(RestRequest.Method.POST, IndexManagementPlugin.LRON_BASE_URI), - RestHandler.Route(RestRequest.Method.PUT, "${IndexManagementPlugin.LRON_BASE_URI}/{id}"), - ) - } + override fun routes(): List = listOf( + RestHandler.Route(RestRequest.Method.POST, IndexManagementPlugin.LRON_BASE_URI), + RestHandler.Route(RestRequest.Method.PUT, "${IndexManagementPlugin.LRON_BASE_URI}/{id}"), + ) - override fun getName(): String { - return "create_lron_config_action" - } + override fun getName(): String = "create_lron_config_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/DefaultIndexMetadataService.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/DefaultIndexMetadataService.kt index fb6fa43c8..eace9af2c 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/DefaultIndexMetadataService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/DefaultIndexMetadataService.kt @@ -52,17 +52,14 @@ class DefaultIndexMetadataService(val customUUIDSetting: String? = null) : Index * present of cluster state, the extension will override this customUUID setting. This allows an index to migrate off * cluster and back while using this persistent uuid. */ - fun getCustomIndexUUID(indexMetadata: IndexMetadata): String { - return if (customUUIDSetting != null) { - indexMetadata.settings.get(customUUIDSetting, indexMetadata.indexUUID) - } else { - indexMetadata.indexUUID - } + fun getCustomIndexUUID(indexMetadata: IndexMetadata): String = if (customUUIDSetting != null) { + indexMetadata.settings.get(customUUIDSetting, indexMetadata.indexUUID) + } else { + indexMetadata.indexUUID } - override suspend fun getMetadataForAllIndices(client: Client, clusterService: ClusterService): Map { - return getMetadata(listOf("*"), client, clusterService) - } + override suspend fun getMetadataForAllIndices(client: Client, clusterService: ClusterService): Map = + getMetadata(listOf("*"), client, clusterService) companion object { const val DEFAULT_GET_METADATA_TIMEOUT_IN_MILLIS = 30000L diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexMetadataProvider.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexMetadataProvider.kt index aa27ef19e..53662cb76 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexMetadataProvider.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexMetadataProvider.kt @@ -36,9 +36,7 @@ class IndexMetadataProvider( } } - fun isUnManageableIndex(index: String): Boolean { - return Regex(restrictedIndexPattern).matches(index) - } + fun isUnManageableIndex(index: String): Boolean = Regex(restrictedIndexPattern).matches(index) suspend fun getISMIndexMetadataByType(type: String = DEFAULT_INDEX_TYPE, indexNames: List): Map { val service = services[type] ?: throw IllegalArgumentException(getTypeNotRecognizedMessage(type)) @@ -89,9 +87,7 @@ class IndexMetadataProvider( metadata } - fun getIndexMetadataWriteOverrideSettings(): List { - return services.values.mapNotNull { it.getIndexMetadataWriteOverrideSetting() } - } + fun getIndexMetadataWriteOverrideSettings(): List = services.values.mapNotNull { it.getIndexMetadataWriteOverrideSetting() } companion object { const val EVALUATION_FAILURE_MESSAGE = "Matches restricted index pattern defined in the cluster setting" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementHistory.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementHistory.kt index 7a6aa3c6e..55fcefcf0 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementHistory.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementHistory.kt @@ -204,8 +204,7 @@ class IndexStateManagementHistory( val creationTime = indexMetaData.creationDate if ((Instant.now().toEpochMilli() - creationTime) > historyRetentionPeriod.millis) { - val alias = indexMetaData.aliases.firstNotNullOfOrNull { - alias -> + val alias = indexMetaData.aliases.firstNotNullOfOrNull { alias -> IndexManagementIndices.HISTORY_WRITE_INDEX_ALIAS == alias.value.alias } if (alias != null && historyEnabled) { @@ -294,12 +293,12 @@ class IndexStateManagementHistory( } } - private fun shouldAddManagedIndexMetaDataToHistory(managedIndexMetaData: ManagedIndexMetaData): Boolean { - return when (managedIndexMetaData.stepMetaData?.stepStatus) { - Step.StepStatus.STARTING -> false - Step.StepStatus.CONDITION_NOT_MET -> false - else -> true - } + private fun shouldAddManagedIndexMetaDataToHistory( + managedIndexMetaData: ManagedIndexMetaData, + ): Boolean = when (managedIndexMetaData.stepMetaData?.stepStatus) { + Step.StepStatus.STARTING -> false + Step.StepStatus.CONDITION_NOT_MET -> false + else -> true } private fun createManagedIndexMetaDataHistoryIndexRequest(managedIndexMetaData: ManagedIndexMetaData): IndexRequest { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexCoordinator.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexCoordinator.kt index 852b76c0c..3fa05149f 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexCoordinator.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexCoordinator.kt @@ -120,9 +120,9 @@ class ManagedIndexCoordinator( private val templateService: ISMTemplateService, private val indexMetadataProvider: IndexMetadataProvider, private val xContentRegistry: NamedXContentRegistry, -) : ClusterStateListener, - CoroutineScope by CoroutineScope(SupervisorJob() + Dispatchers.Default + CoroutineName("ManagedIndexCoordinator")), - LifecycleListener() { +) : LifecycleListener(), + ClusterStateListener, + CoroutineScope by CoroutineScope(SupervisorJob() + Dispatchers.Default + CoroutineName("ManagedIndexCoordinator")) { private val logger = LogManager.getLogger(javaClass) private val ismIndices = indexManagementIndices @@ -193,9 +193,7 @@ class ManagedIndexCoordinator( } } - private fun executorName(): String { - return ThreadPool.Names.MANAGEMENT - } + private fun executorName(): String = ThreadPool.Names.MANAGEMENT fun onClusterManager() { onClusterManagerTimeStamp = System.currentTimeMillis() diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexRunner.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexRunner.kt index d0a3e0269..3cbff0fec 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexRunner.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexRunner.kt @@ -856,16 +856,14 @@ object ManagedIndexRunner : } } - private fun compileTemplate(template: Script, managedIndexMetaData: ManagedIndexMetaData): String { - return try { - scriptService.compile(template, TemplateScript.CONTEXT) - .newInstance(template.params + mapOf("ctx" to managedIndexMetaData.convertToMap())) - .execute() - } catch (e: Exception) { - val message = "There was an error compiling mustache template" - logger.error(message, e) - e.message ?: message - } + private fun compileTemplate(template: Script, managedIndexMetaData: ManagedIndexMetaData): String = try { + scriptService.compile(template, TemplateScript.CONTEXT) + .newInstance(template.params + mapOf("ctx" to managedIndexMetaData.convertToMap())) + .execute() + } catch (e: Exception) { + val message = "There was an error compiling mustache template" + logger.error(message, e) + e.message ?: message } private fun clusterIsRed(): Boolean = ClusterStateHealth(clusterService.state()).status == ClusterHealthStatus.RED @@ -893,23 +891,21 @@ object ManagedIndexRunner : // TODO: This is a hacky solution to get the current start time off the job interval as job-scheduler currently does not // make this public, long term solution is to make the changes in job-scheduler, cherry-pick back into ISM supported versions and // republish job-scheduler spi to maven, in the interim we will parse the current interval start time - private suspend fun getIntervalStartTime(managedIndexConfig: ManagedIndexConfig): Instant { - return withContext(Dispatchers.IO) { - val intervalJsonString = managedIndexConfig.schedule.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS).string() - val xcp = XContentType.JSON.xContent().createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, intervalJsonString) - ensureExpectedToken(Token.START_OBJECT, xcp.nextToken(), xcp) // start of schedule block - ensureExpectedToken(Token.FIELD_NAME, xcp.nextToken(), xcp) // "interval" - ensureExpectedToken(Token.START_OBJECT, xcp.nextToken(), xcp) // start of interval block - var startTime: Long? = null - while (xcp.nextToken() != Token.END_OBJECT) { - val fieldName = xcp.currentName() - xcp.nextToken() - when (fieldName) { - "start_time" -> startTime = xcp.longValue() - } + private suspend fun getIntervalStartTime(managedIndexConfig: ManagedIndexConfig): Instant = withContext(Dispatchers.IO) { + val intervalJsonString = managedIndexConfig.schedule.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS).string() + val xcp = XContentType.JSON.xContent().createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, intervalJsonString) + ensureExpectedToken(Token.START_OBJECT, xcp.nextToken(), xcp) // start of schedule block + ensureExpectedToken(Token.FIELD_NAME, xcp.nextToken(), xcp) // "interval" + ensureExpectedToken(Token.START_OBJECT, xcp.nextToken(), xcp) // start of interval block + var startTime: Long? = null + while (xcp.nextToken() != Token.END_OBJECT) { + val fieldName = xcp.currentName() + xcp.nextToken() + when (fieldName) { + "start_time" -> startTime = xcp.longValue() } - Instant.ofEpochMilli(requireNotNull(startTime)) } + Instant.ofEpochMilli(requireNotNull(startTime)) } /** diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/MetadataService.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/MetadataService.kt index a9967f410..d063b8fdf 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/MetadataService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/MetadataService.kt @@ -194,22 +194,20 @@ class MetadataService( } } - private fun updateSettingListener(status: Int): ActionListener { - return object : ActionListener { - override fun onFailure(e: Exception) { - logger.error("Failed to update template migration setting to $status", e) - throw IndexManagementException.wrap(Exception("Failed to update template migration setting to $status")) - } + private fun updateSettingListener(status: Int): ActionListener = object : ActionListener { + override fun onFailure(e: Exception) { + logger.error("Failed to update template migration setting to $status", e) + throw IndexManagementException.wrap(Exception("Failed to update template migration setting to $status")) + } - override fun onResponse(response: ClusterUpdateSettingsResponse) { - if (!response.isAcknowledged) { - logger.error("Update metadata migration setting to $status is not acknowledged") - throw IndexManagementException.wrap( - Exception("Update metadata migration setting to $status is not acknowledged"), - ) - } else { - logger.info("Successfully metadata template migration setting to $status") - } + override fun onResponse(response: ClusterUpdateSettingsResponse) { + if (!response.isAcknowledged) { + logger.error("Update metadata migration setting to $status is not acknowledged") + throw IndexManagementException.wrap( + Exception("Update metadata migration setting to $status is not acknowledged"), + ) + } else { + logger.info("Successfully metadata template migration setting to $status") } } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/PluginVersionSweepCoordinator.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/PluginVersionSweepCoordinator.kt index 06b90033d..20bcb3d82 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/PluginVersionSweepCoordinator.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/PluginVersionSweepCoordinator.kt @@ -26,8 +26,8 @@ class PluginVersionSweepCoordinator( settings: Settings, private val threadPool: ThreadPool, var clusterService: ClusterService, -) : CoroutineScope by CoroutineScope(SupervisorJob() + Dispatchers.Default + CoroutineName("ISMPluginSweepCoordinator")), - LifecycleListener(), +) : LifecycleListener(), + CoroutineScope by CoroutineScope(SupervisorJob() + Dispatchers.Default + CoroutineName("ISMPluginSweepCoordinator")), ClusterStateListener { private val logger = LogManager.getLogger(javaClass) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasAction.kt index 7c8e68e59..abb564bdd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasAction.kt @@ -39,9 +39,7 @@ class AliasAction( private val steps = listOf(attemptAliasActionsStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptAliasActionsStep - } + override fun getStepToExecute(context: StepContext): Step = attemptAliasActionsStep override fun getSteps(): List = steps diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationAction.kt index 5d8ca7662..a83f04cdc 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationAction.kt @@ -29,9 +29,7 @@ class AllocationAction( private val steps = listOf(attemptAllocationStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptAllocationStep - } + override fun getStepToExecute(context: StepContext): Step = attemptAllocationStep override fun getSteps(): List = steps diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionParser.kt index 129e4e342..57deb33b3 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionParser.kt @@ -49,9 +49,7 @@ class AllocationActionParser : ActionParser() { return AllocationAction(require, include, exclude, waitFor, index) } - override fun getActionType(): String { - return AllocationAction.name - } + override fun getActionType(): String = AllocationAction.name private fun assignObject(xcp: XContentParser, objectMap: MutableMap) { ensureExpectedToken(Token.START_OBJECT, xcp.currentToken(), xcp) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseAction.kt index e1758c62d..7daa8dce4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseAction.kt @@ -21,9 +21,7 @@ class CloseAction( private val steps = listOf(attemptCloseStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptCloseStep - } + override fun getStepToExecute(context: StepContext): Step = attemptCloseStep override fun getSteps(): List = steps } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionParser.kt index a8ac8ff01..d9e8ceccd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionParser.kt @@ -24,7 +24,5 @@ class CloseActionParser : ActionParser() { return CloseAction(index) } - override fun getActionType(): String { - return CloseAction.name - } + override fun getActionType(): String = CloseAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteAction.kt index c22c03d95..2113cb6fc 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteAction.kt @@ -21,9 +21,7 @@ class DeleteAction( private val attemptDeleteStep = AttemptDeleteStep() private val steps = listOf(attemptDeleteStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptDeleteStep - } + override fun getStepToExecute(context: StepContext): Step = attemptDeleteStep override fun getSteps(): List = steps } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionParser.kt index 42a269cd0..2a60aebab 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionParser.kt @@ -24,7 +24,5 @@ class DeleteActionParser : ActionParser() { return DeleteAction(index) } - override fun getActionType(): String { - return DeleteAction.name - } + override fun getActionType(): String = DeleteAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionParser.kt index f0f0f26a3..e100231c2 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionParser.kt @@ -39,7 +39,5 @@ class ForceMergeActionParser : ActionParser() { ) } - override fun getActionType(): String { - return ForceMergeAction.name - } + override fun getActionType(): String = ForceMergeAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionParser.kt index cc7c3c3ab..11aaf6a2f 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionParser.kt @@ -39,7 +39,5 @@ class IndexPriorityActionParser : ActionParser() { ) } - override fun getActionType(): String { - return IndexPriorityAction.name - } + override fun getActionType(): String = IndexPriorityAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationAction.kt index de232074c..f883506db 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationAction.kt @@ -32,9 +32,7 @@ class NotificationAction( private val attemptNotificationStep = AttemptNotificationStep(this) private val steps = listOf(attemptNotificationStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptNotificationStep - } + override fun getStepToExecute(context: StepContext): Step = attemptNotificationStep override fun getSteps(): List = steps diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionParser.kt index 5e3aed437..4e6ce7b4b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionParser.kt @@ -54,7 +54,5 @@ class NotificationActionParser : ActionParser() { ) } - override fun getActionType(): String { - return NotificationAction.name - } + override fun getActionType(): String = NotificationAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenAction.kt index a01969317..5668898ab 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenAction.kt @@ -20,9 +20,7 @@ class OpenAction( private val attemptOpenStep = AttemptOpenStep() private val steps = listOf(attemptOpenStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptOpenStep - } + override fun getStepToExecute(context: StepContext): Step = attemptOpenStep override fun getSteps(): List = steps } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionParser.kt index 5974a2656..41598ec14 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionParser.kt @@ -24,7 +24,5 @@ class OpenActionParser : ActionParser() { return OpenAction(index) } - override fun getActionType(): String { - return OpenAction.name - } + override fun getActionType(): String = OpenAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyAction.kt index e0c13f61c..159cfddcf 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyAction.kt @@ -20,9 +20,7 @@ class ReadOnlyAction( private val setReadOnlyStep = SetReadOnlyStep() private val steps = listOf(setReadOnlyStep) - override fun getStepToExecute(context: StepContext): Step { - return setReadOnlyStep - } + override fun getStepToExecute(context: StepContext): Step = setReadOnlyStep override fun getSteps(): List = steps } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionParser.kt index 6257886fa..fa3e612e6 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionParser.kt @@ -24,7 +24,5 @@ class ReadOnlyActionParser : ActionParser() { return ReadOnlyAction(index) } - override fun getActionType(): String { - return ReadOnlyAction.name - } + override fun getActionType(): String = ReadOnlyAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteAction.kt index 5d4dc2fd5..5dde640cf 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteAction.kt @@ -21,9 +21,7 @@ class ReadWriteAction( private val setReadWriteStep = SetReadWriteStep() private val steps = listOf(setReadWriteStep) - override fun getStepToExecute(context: StepContext): Step { - return setReadWriteStep - } + override fun getStepToExecute(context: StepContext): Step = setReadWriteStep override fun getSteps(): List = steps } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionParser.kt index 76626bbd4..c5fe9b07a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionParser.kt @@ -24,7 +24,5 @@ class ReadWriteActionParser : ActionParser() { return ReadWriteAction(index) } - override fun getActionType(): String { - return ReadWriteAction.name - } + override fun getActionType(): String = ReadWriteAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountAction.kt index 5ec5cb447..1ef2afa82 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountAction.kt @@ -25,9 +25,7 @@ class ReplicaCountAction( private val attemptReplicaCountStep = AttemptReplicaCountStep(this) private val steps = listOf(attemptReplicaCountStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptReplicaCountStep - } + override fun getStepToExecute(context: StepContext): Step = attemptReplicaCountStep override fun getSteps(): List = steps diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionParser.kt index 90f4e1497..ff9edc4cb 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionParser.kt @@ -38,7 +38,5 @@ class ReplicaCountActionParser : ActionParser() { ) } - override fun getActionType(): String { - return ReplicaCountAction.name - } + override fun getActionType(): String = ReplicaCountAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverAction.kt index a0509f1d8..6181650b5 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverAction.kt @@ -38,9 +38,7 @@ class RolloverAction( private val attemptRolloverStep = AttemptRolloverStep(this) private val steps = listOf(attemptRolloverStep) - override fun getStepToExecute(context: StepContext): Step { - return attemptRolloverStep - } + override fun getStepToExecute(context: StepContext): Step = attemptRolloverStep override fun getSteps(): List = steps diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionParser.kt index bbd476611..71f3c0aec 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionParser.kt @@ -54,7 +54,5 @@ class RolloverActionParser : ActionParser() { return RolloverAction(minSize, minDocs, minAge, minPrimaryShardSize, copyAlias, index) } - override fun getActionType(): String { - return RolloverAction.name - } + override fun getActionType(): String = RolloverAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionParser.kt index d512661d0..637327f89 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionParser.kt @@ -36,7 +36,5 @@ class RollupActionParser : ActionParser() { return RollupAction(ismRollup = requireNotNull(ismRollup) { "RollupAction rollup is null" }, index) } - override fun getActionType(): String { - return RollupAction.name - } + override fun getActionType(): String = RollupAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionParser.kt index cfaedf169..3db85998d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionParser.kt @@ -75,7 +75,5 @@ class ShrinkActionParser : ActionParser() { return ShrinkAction(numNewShards, maxShardSize, percentageOfSourceShards, targetIndexTemplate, aliases, switchAliases, forceUnsafe, index) } - override fun getActionType(): String { - return ShrinkAction.name - } + override fun getActionType(): String = ShrinkAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionParser.kt index c545e3cb2..0a3abca04 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionParser.kt @@ -46,7 +46,5 @@ class SnapshotActionParser : ActionParser() { ) } - override fun getActionType(): String { - return SnapshotAction.name - } + override fun getActionType(): String = SnapshotAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionParser.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionParser.kt index 9d7eb1360..290f94b7f 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionParser.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionParser.kt @@ -36,7 +36,5 @@ class TransformActionParser : ActionParser() { return TransformAction(ismTransform = requireNotNull(ismTransform) { "TransformAction transform is null." }, index) } - override fun getActionType(): String { - return TransformAction.name - } + override fun getActionType(): String = TransformAction.name } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionsAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionsAction.kt index 6687d6179..790d0cd2b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionsAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionsAction.kt @@ -22,9 +22,7 @@ class TransitionsAction( override fun getSteps(): List = steps - override fun getStepToExecute(context: StepContext): Step { - return attemptTransitionStep - } + override fun getStepToExecute(context: StepContext): Step = attemptTransitionStep companion object { const val name = "transition" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/migration/MigrationServices.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/migration/MigrationServices.kt index 26b1aaab9..c0b9522d4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/migration/MigrationServices.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/migration/MigrationServices.kt @@ -113,18 +113,16 @@ class ISMTemplateService( runTimeCounter = 0 } - private fun updateSettingListener(): ActionListener { - return object : ActionListener { - override fun onFailure(e: Exception) { - logger.error("Failed to update template migration setting", e) - } + private fun updateSettingListener(): ActionListener = object : ActionListener { + override fun onFailure(e: Exception) { + logger.error("Failed to update template migration setting", e) + } - override fun onResponse(response: ClusterUpdateSettingsResponse) { - if (!response.isAcknowledged) { - logger.error("Update template migration setting is not acknowledged") - } else { - logger.info("Successfully update template migration setting") - } + override fun onResponse(response: ClusterUpdateSettingsResponse) { + if (!response.isAcknowledged) { + logger.error("Update template migration setting is not acknowledged") + } else { + logger.info("Successfully update template migration setting") } } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ChangePolicy.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ChangePolicy.kt index 88899c2dd..6dced7cff 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ChangePolicy.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ChangePolicy.kt @@ -36,7 +36,8 @@ data class ChangePolicy( val include: List, val isSafe: Boolean, val user: User? = null, -) : Writeable, ToXContentObject { +) : Writeable, + ToXContentObject { @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ErrorNotification.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ErrorNotification.kt index 7df0a7d8a..302a53ebb 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ErrorNotification.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ErrorNotification.kt @@ -23,7 +23,8 @@ data class ErrorNotification( val destination: Destination?, val channel: Channel?, val messageTemplate: Script, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { require(destination != null || channel != null) { "ErrorNotification must contain a destination or channel" } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ExplainFilter.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ExplainFilter.kt index b9da29072..d37c59cb5 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ExplainFilter.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ExplainFilter.kt @@ -25,7 +25,8 @@ data class ExplainFilter( val state: String? = null, val actionType: String? = null, val failed: Boolean? = null, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ISMTemplate.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ISMTemplate.kt index e8968e7b0..830ec2e6b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ISMTemplate.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ISMTemplate.kt @@ -24,20 +24,19 @@ data class ISMTemplate( val indexPatterns: List, val priority: Int, val lastUpdatedTime: Instant, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { require(priority >= 0) { "Requires priority to be >= 0" } require(indexPatterns.isNotEmpty()) { "Requires at least one index pattern" } } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(INDEX_PATTERN, indexPatterns) - .field(PRIORITY, priority) - .optionalTimeField(LAST_UPDATED_TIME_FIELD, lastUpdatedTime) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(INDEX_PATTERN, indexPatterns) + .field(PRIORITY, priority) + .optionalTimeField(LAST_UPDATED_TIME_FIELD, lastUpdatedTime) + .endObject() @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ManagedIndexConfig.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ManagedIndexConfig.kt index 4347d0c9c..1f63da248 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ManagedIndexConfig.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ManagedIndexConfig.kt @@ -60,9 +60,7 @@ data class ManagedIndexConfig( override fun getLockDurationSeconds(): Long = 3600L // 1 hour - override fun getJitter(): Double? { - return jobJitter - } + override fun getJitter(): Double? = jobJitter override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { builder diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Policy.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Policy.kt index b389cc388..bebfcc165 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Policy.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Policy.kt @@ -40,7 +40,8 @@ data class Policy( val states: List, val ismTemplate: List? = null, val user: User? = null, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { val distinctStateNames = states.map { it.name }.distinct() @@ -56,9 +57,7 @@ data class Policy( requireNotNull(states.find { it.name == defaultState }) { "Policy must have a valid default state" } } - fun toXContent(builder: XContentBuilder): XContentBuilder { - return toXContent(builder, ToXContent.EMPTY_PARAMS) - } + fun toXContent(builder: XContentBuilder): XContentBuilder = toXContent(builder, ToXContent.EMPTY_PARAMS) override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { builder.startObject() diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/State.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/State.kt index c703e7405..379f68691 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/State.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/State.kt @@ -27,7 +27,8 @@ data class State( val name: String, val actions: List, val transitions: List, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { require(name.isNotBlank()) { "State must contain a valid name" } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Transition.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Transition.kt index 3aa6ec1d8..b63473131 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Transition.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/Transition.kt @@ -23,7 +23,8 @@ import java.io.IOException data class Transition( val stateName: String, val conditions: Conditions?, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { builder.startObject() @@ -80,7 +81,8 @@ data class Conditions( val size: ByteSizeValue? = null, val cron: CronSchedule? = null, val rolloverAge: TimeValue? = null, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { val conditionsList = listOf(indexAge, docCount, size, cron, rolloverAge) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Chime.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Chime.kt index 46af1b0f1..ac621f65a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Chime.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Chime.kt @@ -23,13 +23,13 @@ import java.io.IOException * Temporary import from alerting, this will be removed once we pull notifications out of * alerting so all plugins can consume and use. */ -data class Chime(val url: String) : ToXContent, Writeable { +data class Chime(val url: String) : + ToXContent, + Writeable { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject(TYPE) - .field(URL, url) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject(TYPE) + .field(URL, url) + .endObject() @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -66,7 +66,5 @@ data class Chime(val url: String) : ToXContent, Writeable { } // Complete JSON structure is now constructed in the notification plugin - fun constructMessageContent(subject: String?, message: String): String { - return if (Strings.isNullOrEmpty(subject)) message else "$subject \n\n $message" - } + fun constructMessageContent(subject: String?, message: String): String = if (Strings.isNullOrEmpty(subject)) message else "$subject \n\n $message" } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/CustomWebhook.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/CustomWebhook.kt index 3e1829d53..90eaf4150 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/CustomWebhook.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/CustomWebhook.kt @@ -33,7 +33,8 @@ data class CustomWebhook( val headerParams: Map, val username: String?, val password: String?, -) : ToXContent, Writeable { +) : ToXContent, + Writeable { init { require(!(Strings.isNullOrEmpty(url) && Strings.isNullOrEmpty(host))) { @@ -41,19 +42,17 @@ data class CustomWebhook( } } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject(TYPE) - .field(URL, url) - .field(SCHEME_FIELD, scheme) - .field(HOST_FIELD, host) - .field(PORT_FIELD, port) - .field(PATH_FIELD, path) - .field(QUERY_PARAMS_FIELD, queryParams) - .field(HEADER_PARAMS_FIELD, headerParams) - .field(USERNAME_FIELD, username) - .field(PASSWORD_FIELD, password) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject(TYPE) + .field(URL, url) + .field(SCHEME_FIELD, scheme) + .field(HOST_FIELD, host) + .field(PORT_FIELD, port) + .field(PATH_FIELD, path) + .field(QUERY_PARAMS_FIELD, queryParams) + .field(HEADER_PARAMS_FIELD, headerParams) + .field(USERNAME_FIELD, username) + .field(PASSWORD_FIELD, password) + .endObject() constructor(sin: StreamInput) : this( sin.readOptionalString(), @@ -128,8 +127,6 @@ data class CustomWebhook( } @Suppress("UNCHECKED_CAST") - fun suppressWarning(map: MutableMap?): MutableMap { - return map as MutableMap - } + fun suppressWarning(map: MutableMap?): MutableMap = map as MutableMap } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Destination.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Destination.kt index 1d7772206..47ce1218d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Destination.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Destination.kt @@ -32,7 +32,8 @@ data class Destination( val chime: Chime?, val slack: Slack?, val customWebhook: CustomWebhook?, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { builder.startObject() @@ -140,15 +141,16 @@ data class Destination( return content } - private fun getLegacyCustomWebhookMessageURL(customWebhook: CustomWebhook?, compiledMessage: String): String { - return LegacyCustomWebhookMessage.Builder("custom_webhook") - .withUrl(customWebhook?.url) - .withScheme(customWebhook?.scheme) - .withHost(customWebhook?.host) - .withPort(customWebhook?.port) - .withPath(customWebhook?.path) - .withQueryParams(customWebhook?.queryParams) - .withMessage(compiledMessage) - .build().uri.toString() - } + private fun getLegacyCustomWebhookMessageURL( + customWebhook: CustomWebhook?, + compiledMessage: String, + ): String = LegacyCustomWebhookMessage.Builder("custom_webhook") + .withUrl(customWebhook?.url) + .withScheme(customWebhook?.scheme) + .withHost(customWebhook?.host) + .withPort(customWebhook?.port) + .withPath(customWebhook?.path) + .withQueryParams(customWebhook?.queryParams) + .withMessage(compiledMessage) + .build().uri.toString() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Slack.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Slack.kt index 508194ec8..e11d52326 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Slack.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/destination/Slack.kt @@ -23,13 +23,13 @@ import java.io.IOException * Temporary import from alerting, this will be removed once we pull notifications out of * alerting so all plugins can consume and use. */ -data class Slack(val url: String) : ToXContent, Writeable { +data class Slack(val url: String) : + ToXContent, + Writeable { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject(TYPE) - .field(URL, url) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject(TYPE) + .field(URL, url) + .endObject() @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -66,7 +66,5 @@ data class Slack(val url: String) : ToXContent, Writeable { } // Complete JSON structure is now constructed in the notification plugin - fun constructMessageContent(subject: String?, message: String): String { - return if (Strings.isNullOrEmpty(subject)) message else "$subject \n\n $message" - } + fun constructMessageContent(subject: String?, message: String): String = if (Strings.isNullOrEmpty(subject)) message else "$subject \n\n $message" } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/opensearchapi/OpenSearchExtensions.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/opensearchapi/OpenSearchExtensions.kt index 3174eccc8..b88672766 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/opensearchapi/OpenSearchExtensions.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/opensearchapi/OpenSearchExtensions.kt @@ -198,7 +198,5 @@ fun XContentBuilder.buildMetadata(name: String, metadata: ToXContentFragment, pa } // Get the oldest rollover time or null if index was never rolled over -fun IndexMetadata.getOldestRolloverTime(): Instant? { - return this.rolloverInfos.values.minOfOrNull { it.time } // oldest should be min as its epoch time - ?.let { Instant.ofEpochMilli(it) } -} +fun IndexMetadata.getOldestRolloverTime(): Instant? = this.rolloverInfos.values.minOfOrNull { it.time } // oldest should be min as its epoch time + ?.let { Instant.ofEpochMilli(it) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestAddPolicyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestAddPolicyAction.kt index 665a6c441..cdbd3f3ad 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestAddPolicyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestAddPolicyAction.kt @@ -27,22 +27,18 @@ class RestAddPolicyAction : BaseRestHandler() { override fun getName(): String = "add_policy_action" - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, ADD_POLICY_BASE_URI, - POST, LEGACY_ADD_POLICY_BASE_URI, - ), - ReplacedRoute( - POST, "$ADD_POLICY_BASE_URI/{index}", - POST, "$LEGACY_ADD_POLICY_BASE_URI/{index}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, ADD_POLICY_BASE_URI, + POST, LEGACY_ADD_POLICY_BASE_URI, + ), + ReplacedRoute( + POST, "$ADD_POLICY_BASE_URI/{index}", + POST, "$LEGACY_ADD_POLICY_BASE_URI/{index}", + ), + ) @Throws(IOException::class) @Suppress("SpreadOperator") // There is no way around dealing with java vararg without spread operator. diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyAction.kt index 79fc4c059..565b16cdd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyAction.kt @@ -27,22 +27,18 @@ import java.io.IOException class RestChangePolicyAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, CHANGE_POLICY_BASE_URI, - POST, LEGACY_CHANGE_POLICY_BASE_URI, - ), - ReplacedRoute( - POST, "$CHANGE_POLICY_BASE_URI/{index}", - POST, "$LEGACY_CHANGE_POLICY_BASE_URI/{index}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, CHANGE_POLICY_BASE_URI, + POST, LEGACY_CHANGE_POLICY_BASE_URI, + ), + ReplacedRoute( + POST, "$CHANGE_POLICY_BASE_URI/{index}", + POST, "$LEGACY_CHANGE_POLICY_BASE_URI/{index}", + ), + ) override fun getName(): String = "change_policy_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestDeletePolicyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestDeletePolicyAction.kt index 2945f12cf..03b6efc7c 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestDeletePolicyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestDeletePolicyAction.kt @@ -22,18 +22,14 @@ import java.io.IOException class RestDeletePolicyAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } - - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - DELETE, "$POLICY_BASE_URI/{policyID}", - DELETE, "$LEGACY_POLICY_BASE_URI/{policyID}", - ), - ) - } + override fun routes(): List = emptyList() + + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + DELETE, "$POLICY_BASE_URI/{policyID}", + DELETE, "$LEGACY_POLICY_BASE_URI/{policyID}", + ), + ) override fun getName(): String = "delete_policy_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestExplainAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestExplainAction.kt index 271f51b76..0f4c66531 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestExplainAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestExplainAction.kt @@ -43,34 +43,28 @@ class RestExplainAction : BaseRestHandler() { const val LEGACY_EXPLAIN_BASE_URI = "$LEGACY_ISM_BASE_URI/explain" } - override fun routes(): List { - return emptyList() - } - - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - GET, EXPLAIN_BASE_URI, - GET, LEGACY_EXPLAIN_BASE_URI, - ), - ReplacedRoute( - GET, "$EXPLAIN_BASE_URI/{index}", - GET, "$LEGACY_EXPLAIN_BASE_URI/{index}", - ), - ReplacedRoute( - POST, EXPLAIN_BASE_URI, - POST, LEGACY_EXPLAIN_BASE_URI, - ), - ReplacedRoute( - POST, "$EXPLAIN_BASE_URI/{index}", - POST, "$LEGACY_EXPLAIN_BASE_URI/{index}", - ), - ) - } - - override fun getName(): String { - return "ism_explain_action" - } + override fun routes(): List = emptyList() + + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + GET, EXPLAIN_BASE_URI, + GET, LEGACY_EXPLAIN_BASE_URI, + ), + ReplacedRoute( + GET, "$EXPLAIN_BASE_URI/{index}", + GET, "$LEGACY_EXPLAIN_BASE_URI/{index}", + ), + ReplacedRoute( + POST, EXPLAIN_BASE_URI, + POST, LEGACY_EXPLAIN_BASE_URI, + ), + ReplacedRoute( + POST, "$EXPLAIN_BASE_URI/{index}", + POST, "$LEGACY_EXPLAIN_BASE_URI/{index}", + ), + ) + + override fun getName(): String = "ism_explain_action" override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { log.debug("${request.method()} ${request.path()}") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestGetPolicyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestGetPolicyAction.kt index aa9883ac8..64a57b74f 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestGetPolicyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestGetPolicyAction.kt @@ -30,30 +30,24 @@ private val log = LogManager.getLogger(RestGetPolicyAction::class.java) class RestGetPolicyAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - GET, POLICY_BASE_URI, - GET, LEGACY_POLICY_BASE_URI, - ), - ReplacedRoute( - GET, "$POLICY_BASE_URI/{policyID}", - GET, "$LEGACY_POLICY_BASE_URI/{policyID}", - ), - ReplacedRoute( - HEAD, "$POLICY_BASE_URI/{policyID}", - HEAD, "$LEGACY_POLICY_BASE_URI/{policyID}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + GET, POLICY_BASE_URI, + GET, LEGACY_POLICY_BASE_URI, + ), + ReplacedRoute( + GET, "$POLICY_BASE_URI/{policyID}", + GET, "$LEGACY_POLICY_BASE_URI/{policyID}", + ), + ReplacedRoute( + HEAD, "$POLICY_BASE_URI/{policyID}", + HEAD, "$LEGACY_POLICY_BASE_URI/{policyID}", + ), + ) - override fun getName(): String { - return "get_policy_action" - } + override fun getName(): String = "get_policy_action" override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { log.debug("${request.method()} ${request.path()}") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestIndexPolicyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestIndexPolicyAction.kt index 3b53b1745..f5a838347 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestIndexPolicyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestIndexPolicyAction.kt @@ -47,26 +47,20 @@ class RestIndexPolicyAction( clusterService.clusterSettings.addSettingsUpdateConsumer(ALLOW_LIST) { allowList = it } } - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - PUT, POLICY_BASE_URI, - PUT, LEGACY_POLICY_BASE_URI, - ), - ReplacedRoute( - PUT, "$POLICY_BASE_URI/{policyID}", - PUT, "$LEGACY_POLICY_BASE_URI/{policyID}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + PUT, POLICY_BASE_URI, + PUT, LEGACY_POLICY_BASE_URI, + ), + ReplacedRoute( + PUT, "$POLICY_BASE_URI/{policyID}", + PUT, "$LEGACY_POLICY_BASE_URI/{policyID}", + ), + ) - override fun getName(): String { - return "index_policy_action" - } + override fun getName(): String = "index_policy_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRemovePolicyAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRemovePolicyAction.kt index a169a8481..8dfece106 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRemovePolicyAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRemovePolicyAction.kt @@ -23,22 +23,18 @@ import java.io.IOException class RestRemovePolicyAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } - - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, REMOVE_POLICY_BASE_URI, - POST, LEGACY_REMOVE_POLICY_BASE_URI, - ), - ReplacedRoute( - POST, "$REMOVE_POLICY_BASE_URI/{index}", - POST, "$LEGACY_REMOVE_POLICY_BASE_URI/{index}", - ), - ) - } + override fun routes(): List = emptyList() + + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, REMOVE_POLICY_BASE_URI, + POST, LEGACY_REMOVE_POLICY_BASE_URI, + ), + ReplacedRoute( + POST, "$REMOVE_POLICY_BASE_URI/{index}", + POST, "$LEGACY_REMOVE_POLICY_BASE_URI/{index}", + ), + ) override fun getName(): String = "remove_policy_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexAction.kt index 795832702..e980e03c6 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexAction.kt @@ -26,26 +26,20 @@ import org.opensearch.rest.action.RestToXContentListener class RestRetryFailedManagedIndexAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, RETRY_BASE_URI, - POST, LEGACY_RETRY_BASE_URI, - ), - ReplacedRoute( - POST, "$RETRY_BASE_URI/{index}", - POST, "$LEGACY_RETRY_BASE_URI/{index}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, RETRY_BASE_URI, + POST, LEGACY_RETRY_BASE_URI, + ), + ReplacedRoute( + POST, "$RETRY_BASE_URI/{index}", + POST, "$LEGACY_RETRY_BASE_URI/{index}", + ), + ) - override fun getName(): String { - return "retry_failed_managed_index" - } + override fun getName(): String = "retry_failed_managed_index" @Suppress("SpreadOperator") // There is no way around dealing with java vararg without spread operator. override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/alias/AttemptAliasActionsStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/alias/AttemptAliasActionsStep.kt index b05737b21..03b9f6edf 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/alias/AttemptAliasActionsStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/alias/AttemptAliasActionsStep.kt @@ -62,13 +62,11 @@ class AttemptAliasActionsStep(private val action: AliasAction) : Step(name) { } } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/allocation/AttemptAllocationStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/allocation/AttemptAllocationStep.kt index cac8ccc0a..fb63a9a70 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/allocation/AttemptAllocationStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/allocation/AttemptAllocationStep.kt @@ -64,13 +64,11 @@ class AttemptAllocationStep(private val action: AllocationAction) : Step(name) { } } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/close/AttemptCloseStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/close/AttemptCloseStep.kt index be69427c8..d7a6e181f 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/close/AttemptCloseStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/close/AttemptCloseStep.kt @@ -74,13 +74,11 @@ class AttemptCloseStep : Step(name) { info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/delete/AttemptDeleteStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/delete/AttemptDeleteStep.kt index 9b3032850..5718f14c3 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/delete/AttemptDeleteStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/delete/AttemptDeleteStep.kt @@ -71,13 +71,11 @@ class AttemptDeleteStep : Step(name) { info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/indexpriority/AttemptSetIndexPriorityStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/indexpriority/AttemptSetIndexPriorityStep.kt index d30bc9b3f..3587fded8 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/indexpriority/AttemptSetIndexPriorityStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/indexpriority/AttemptSetIndexPriorityStep.kt @@ -64,13 +64,11 @@ class AttemptSetIndexPriorityStep(private val action: IndexPriorityAction) : Ste info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/notification/AttemptNotificationStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/notification/AttemptNotificationStep.kt index 2f667185d..0fda43f81 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/notification/AttemptNotificationStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/notification/AttemptNotificationStep.kt @@ -51,19 +51,19 @@ class AttemptNotificationStep(private val action: NotificationAction) : Step(nam info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) - private fun compileTemplate(scriptService: ScriptService, template: Script, managedIndexMetaData: ManagedIndexMetaData): String { - return scriptService.compile(template, TemplateScript.CONTEXT) - .newInstance(template.params + mapOf("ctx" to managedIndexMetaData.convertToMap())) - .execute() - } + private fun compileTemplate( + scriptService: ScriptService, + template: Script, + managedIndexMetaData: ManagedIndexMetaData, + ): String = scriptService.compile(template, TemplateScript.CONTEXT) + .newInstance(template.params + mapOf("ctx" to managedIndexMetaData.convertToMap())) + .execute() override fun isIdempotent(): Boolean = false diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/open/AttemptOpenStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/open/AttemptOpenStep.kt index c2ae52334..60663a223 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/open/AttemptOpenStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/open/AttemptOpenStep.kt @@ -55,13 +55,11 @@ class AttemptOpenStep : Step(name) { info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readonly/SetReadOnlyStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readonly/SetReadOnlyStep.kt index fe63148b6..539ed476a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readonly/SetReadOnlyStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readonly/SetReadOnlyStep.kt @@ -61,13 +61,11 @@ class SetReadOnlyStep : Step(name) { info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent(): Boolean = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readwrite/SetReadWriteStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readwrite/SetReadWriteStep.kt index 20dc4cac1..97d860b4b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readwrite/SetReadWriteStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/readwrite/SetReadWriteStep.kt @@ -63,13 +63,11 @@ class SetReadWriteStep : Step(name) { info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent(): Boolean = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/replicacount/AttemptReplicaCountStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/replicacount/AttemptReplicaCountStep.kt index 9909b99c7..79cbdaa67 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/replicacount/AttemptReplicaCountStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/replicacount/AttemptReplicaCountStep.kt @@ -63,13 +63,11 @@ class AttemptReplicaCountStep(private val action: ReplicaCountAction) : Step(nam info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/rollover/AttemptRolloverStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/rollover/AttemptRolloverStep.kt index 55ec19a69..5ec66ff03 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/rollover/AttemptRolloverStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/rollover/AttemptRolloverStep.kt @@ -346,15 +346,13 @@ class AttemptRolloverStep(private val action: RolloverAction) : Step(name) { } } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - rolledOver = if (currentMetadata.rolledOver == true) true else stepStatus == StepStatus.COMPLETED, - rolledOverIndexName = if (currentMetadata.rolledOverIndexName != null) currentMetadata.rolledOverIndexName else newIndex, - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + rolledOver = if (currentMetadata.rolledOver == true) true else stepStatus == StepStatus.COMPLETED, + rolledOverIndexName = if (currentMetadata.rolledOverIndexName != null) currentMetadata.rolledOverIndexName else newIndex, + transitionTo = null, + info = info, + ) private fun handleException(indexName: String, e: Exception, message: String = getFailedMessage(indexName), conditions: Any? = null) { logger.error(message, e) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptMoveShardsStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptMoveShardsStep.kt index 5fac6839e..f0313e9b8 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptMoveShardsStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptMoveShardsStep.kt @@ -348,7 +348,8 @@ class AttemptMoveShardsStep(private val action: ShrinkAction) : ShrinkStep(name, val shardId = shard.shardRouting.shardId() val currentShardNode = stepContext.clusterService.state().nodes[shard.shardRouting.currentNodeId()] // Don't attempt a dry run for shards which have a copy already on that node - if (shardIdToNodeList[shardId.id]?.contains(targetNodeName) == true || requestedShardIds.contains( + if (shardIdToNodeList[shardId.id]?.contains(targetNodeName) == true || + requestedShardIds.contains( shardId.id, ) ) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptShrinkStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptShrinkStep.kt index 930e9cd38..4d17ceed2 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptShrinkStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/AttemptShrinkStep.kt @@ -121,18 +121,16 @@ class AttemptShrinkStep(private val action: ShrinkAction) : ShrinkStep(name, tru return true } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - actionMetaData = currentMetadata.actionMetaData?.copy( - actionProperties = ActionProperties( - shrinkActionProperties = shrinkActionProperties, - ), + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + actionMetaData = currentMetadata.actionMetaData?.copy( + actionProperties = ActionProperties( + shrinkActionProperties = shrinkActionProperties, ), - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + ), + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = false diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForMoveShardsStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForMoveShardsStep.kt index fe26fad3d..cce6227fd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForMoveShardsStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForMoveShardsStep.kt @@ -96,18 +96,16 @@ class WaitForMoveShardsStep(private val action: ShrinkAction) : ShrinkStep(name, override fun getGenericFailureMessage(): String = FAILURE_MESSAGE - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - actionMetaData = currentMetadata.actionMetaData?.copy( - actionProperties = ActionProperties( - shrinkActionProperties = shrinkActionProperties, - ), + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + actionMetaData = currentMetadata.actionMetaData?.copy( + actionProperties = ActionProperties( + shrinkActionProperties = shrinkActionProperties, ), - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + ), + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) private suspend fun checkTimeOut( stepContext: StepContext, diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForShrinkStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForShrinkStep.kt index 4e00d8286..d9aa325ef 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForShrinkStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/shrink/WaitForShrinkStep.kt @@ -158,18 +158,16 @@ class WaitForShrinkStep(private val action: ShrinkAction) : ShrinkStep(name, tru } } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - actionMetaData = currentMetadata.actionMetaData?.copy( - actionProperties = ActionProperties( - shrinkActionProperties = shrinkActionProperties, - ), + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + actionMetaData = currentMetadata.actionMetaData?.copy( + actionProperties = ActionProperties( + shrinkActionProperties = shrinkActionProperties, ), - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + ), + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent() = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transform/WaitForTransformCompletionStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transform/WaitForTransformCompletionStep.kt index 3fccb8a58..470a47570 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transform/WaitForTransformCompletionStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transform/WaitForTransformCompletionStep.kt @@ -108,14 +108,12 @@ class WaitForTransformCompletionStep : Step(name) { info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - actionMetaData = currentMetadata.actionMetaData, - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + actionMetaData = currentMetadata.actionMetaData, + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = info, + ) override fun isIdempotent(): Boolean = true diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transition/AttemptTransitionStep.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transition/AttemptTransitionStep.kt index a0e6e241e..cf0dee2cd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transition/AttemptTransitionStep.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/step/transition/AttemptTransitionStep.kt @@ -135,14 +135,12 @@ class AttemptTransitionStep(private val action: TransitionsAction) : Step(name) info = mutableInfo.toMap() } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - policyCompleted = policyCompleted, - transitionTo = stateName, - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - info = info, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + policyCompleted = policyCompleted, + transitionTo = stateName, + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + info = info, + ) @Suppress("ReturnCount") private suspend fun getIndexCreationDate( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/ISMStatusResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/ISMStatusResponse.kt index 69639829e..6df00ead6 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/ISMStatusResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/ISMStatusResponse.kt @@ -16,7 +16,9 @@ import org.opensearch.indexmanagement.indexstatemanagement.util.UPDATED_INDICES import org.opensearch.indexmanagement.indexstatemanagement.util.buildInvalidIndexResponse import java.io.IOException -open class ISMStatusResponse : ActionResponse, ToXContentObject { +open class ISMStatusResponse : + ActionResponse, + ToXContentObject { val updated: Int val failedIndices: List diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/ExplainResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/ExplainResponse.kt index 48b1cb027..057335247 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/ExplainResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/ExplainResponse.kt @@ -21,7 +21,9 @@ import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ManagedInde import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ValidationResult import java.io.IOException -open class ExplainResponse : ActionResponse, ToXContentObject { +open class ExplainResponse : + ActionResponse, + ToXContentObject { // TODO refactor these lists usage to map val indexNames: List diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/TransportExplainAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/TransportExplainAction.kt index 9872d4626..de40b41f6 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/TransportExplainAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/explain/TransportExplainAction.kt @@ -461,15 +461,13 @@ class TransportExplainAction @Inject constructor( return null } - private fun parseSearchHits(hits: Array): List { - return hits.map { hit -> - XContentHelper.createParser( - xContentRegistry, - LoggingDeprecationHandler.INSTANCE, - hit.sourceRef, - XContentType.JSON, - ).parseWithType(parse = ManagedIndexConfig.Companion::parse) - } + private fun parseSearchHits(hits: Array): List = hits.map { hit -> + XContentHelper.createParser( + xContentRegistry, + LoggingDeprecationHandler.INSTANCE, + hit.sourceRef, + XContentType.JSON, + ).parseWithType(parse = ManagedIndexConfig.Companion::parse) } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesRequest.kt index 7580184af..31b2abff9 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesRequest.kt @@ -27,9 +27,7 @@ class GetPoliciesRequest : ActionRequest { searchParams = SearchParams(sin), ) - override fun validate(): ActionRequestValidationException? { - return null - } + override fun validate(): ActionRequestValidationException? = null @Throws(IOException::class) override fun writeTo(out: StreamOutput) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesResponse.kt index 8387e9252..95f5d1b59 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPoliciesResponse.kt @@ -20,7 +20,9 @@ import org.opensearch.indexmanagement.util._PRIMARY_TERM import org.opensearch.indexmanagement.util._SEQ_NO import java.io.IOException -class GetPoliciesResponse : ActionResponse, ToXContentObject { +class GetPoliciesResponse : + ActionResponse, + ToXContentObject { val policies: List val totalPolicies: Int diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPolicyResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPolicyResponse.kt index ef26f489d..710028f62 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPolicyResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/getpolicy/GetPolicyResponse.kt @@ -21,7 +21,9 @@ import org.opensearch.indexmanagement.util._SEQ_NO import org.opensearch.indexmanagement.util._VERSION import java.io.IOException -class GetPolicyResponse : ActionResponse, ToXContentObject { +class GetPolicyResponse : + ActionResponse, + ToXContentObject { val id: String val version: Long diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/indexpolicy/IndexPolicyResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/indexpolicy/IndexPolicyResponse.kt index e8ad90ff9..849a1f3b1 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/indexpolicy/IndexPolicyResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/indexpolicy/IndexPolicyResponse.kt @@ -21,7 +21,9 @@ import org.opensearch.indexmanagement.util._SEQ_NO import org.opensearch.indexmanagement.util._VERSION import java.io.IOException -class IndexPolicyResponse : ActionResponse, ToXContentObject { +class IndexPolicyResponse : + ActionResponse, + ToXContentObject { val id: String val version: Long diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/updateindexmetadata/TransportUpdateManagedIndexMetaDataAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/updateindexmetadata/TransportUpdateManagedIndexMetaDataAction.kt index 427371475..0b21cf9c5 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/updateindexmetadata/TransportUpdateManagedIndexMetaDataAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/transport/action/updateindexmetadata/TransportUpdateManagedIndexMetaDataAction.kt @@ -95,13 +95,9 @@ class TransportUpdateManagedIndexMetaDataAction @Inject constructor( ) } - override fun read(si: StreamInput): AcknowledgedResponse { - return AcknowledgedResponse(si) - } + override fun read(si: StreamInput): AcknowledgedResponse = AcknowledgedResponse(si) - override fun executor(): String { - return ThreadPool.Names.SAME - } + override fun executor(): String = ThreadPool.Names.SAME inner class ManagedIndexMetaDataExecutor : ClusterStateTaskExecutor { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtils.kt index 6a5e9f3d7..1925635ba 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtils.kt @@ -91,14 +91,12 @@ fun managedIndexConfigIndexRequest( .source(managedIndexConfig.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)) } -fun managedIndexConfigIndexRequest(managedIndexConfig: ManagedIndexConfig): IndexRequest { - return IndexRequest(INDEX_MANAGEMENT_INDEX) - .id(managedIndexConfig.indexUuid) - .setIfPrimaryTerm(managedIndexConfig.primaryTerm) - .setIfSeqNo(managedIndexConfig.seqNo) - .routing(managedIndexConfig.indexUuid) // we want job doc and its metadata doc be routed to same shard - .source(managedIndexConfig.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)) -} +fun managedIndexConfigIndexRequest(managedIndexConfig: ManagedIndexConfig): IndexRequest = IndexRequest(INDEX_MANAGEMENT_INDEX) + .id(managedIndexConfig.indexUuid) + .setIfPrimaryTerm(managedIndexConfig.primaryTerm) + .setIfSeqNo(managedIndexConfig.seqNo) + .routing(managedIndexConfig.indexUuid) // we want job doc and its metadata doc be routed to same shard + .source(managedIndexConfig.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)) const val METADATA_POST_FIX = "#metadata" @@ -148,28 +146,20 @@ fun updateISMTemplateRequest(policyID: String, ismTemplates: List, .setIfSeqNo(seqNo).setIfPrimaryTerm(primaryTerm) } -fun updateDisableManagedIndexRequest(uuid: String): UpdateRequest { - return updateEnabledField(uuid, false, null) -} +fun updateDisableManagedIndexRequest(uuid: String): UpdateRequest = updateEnabledField(uuid, false, null) -fun updateEnableManagedIndexRequest(uuid: String): UpdateRequest { - return updateEnabledField(uuid, true, Instant.now().toEpochMilli()) -} +fun updateEnableManagedIndexRequest(uuid: String): UpdateRequest = updateEnabledField(uuid, true, Instant.now().toEpochMilli()) -fun deleteManagedIndexRequest(uuid: String): DeleteRequest { - return DeleteRequest(INDEX_MANAGEMENT_INDEX, uuid) -} +fun deleteManagedIndexRequest(uuid: String): DeleteRequest = DeleteRequest(INDEX_MANAGEMENT_INDEX, uuid) -fun deleteManagedIndexMetadataRequest(uuid: String): DeleteRequest { - return DeleteRequest(INDEX_MANAGEMENT_INDEX, managedIndexMetadataID(uuid)).routing(uuid) -} +fun deleteManagedIndexMetadataRequest(uuid: String): DeleteRequest = DeleteRequest(INDEX_MANAGEMENT_INDEX, managedIndexMetadataID(uuid)).routing(uuid) -fun updateManagedIndexRequest(sweptManagedIndexConfig: SweptManagedIndexConfig): UpdateRequest { - return UpdateRequest(INDEX_MANAGEMENT_INDEX, sweptManagedIndexConfig.uuid) - .setIfPrimaryTerm(sweptManagedIndexConfig.primaryTerm) - .setIfSeqNo(sweptManagedIndexConfig.seqNo) - .doc(getPartialChangePolicyBuilder(sweptManagedIndexConfig.changePolicy)) -} +fun updateManagedIndexRequest( + sweptManagedIndexConfig: SweptManagedIndexConfig, +): UpdateRequest = UpdateRequest(INDEX_MANAGEMENT_INDEX, sweptManagedIndexConfig.uuid) + .setIfPrimaryTerm(sweptManagedIndexConfig.primaryTerm) + .setIfSeqNo(sweptManagedIndexConfig.seqNo) + .doc(getPartialChangePolicyBuilder(sweptManagedIndexConfig.changePolicy)) /** * Finds ManagedIndices that exist in [INDEX_MANAGEMENT_INDEX] that do not exist in the cluster state @@ -182,10 +172,8 @@ fun updateManagedIndexRequest(sweptManagedIndexConfig: SweptManagedIndexConfig): fun getManagedIndicesToDelete( currentIndexUuids: List, currentManagedIndexUuids: List, -): List { - return currentManagedIndexUuids.filter { currentManagedIndex -> - !currentIndexUuids.contains(currentManagedIndex) - } +): List = currentManagedIndexUuids.filter { currentManagedIndex -> + !currentIndexUuids.contains(currentManagedIndex) } fun getSweptManagedIndexSearchRequest(scroll: Boolean = false, size: Int = ManagedIndexCoordinator.MAX_HITS): SearchRequest { @@ -293,9 +281,8 @@ fun State.getUpdatedStateMetaData(managedIndexMetaData: ManagedIndexMetaData): S } } -fun Action.shouldBackoff(actionMetaData: ActionMetaData?, actionRetry: ActionRetry?): Pair? { - return this.configRetry?.backoff?.shouldBackoff(actionMetaData, actionRetry) -} +fun Action.shouldBackoff(actionMetaData: ActionMetaData?, actionRetry: ActionRetry?): Pair? = + this.configRetry?.backoff?.shouldBackoff(actionMetaData, actionRetry) @Suppress("ReturnCount") fun Action.hasTimedOut(actionMetaData: ActionMetaData?): Boolean { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/NotificationUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/NotificationUtils.kt index 5eb76abbc..8c2b3f6b4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/NotificationUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/NotificationUtils.kt @@ -57,6 +57,4 @@ suspend fun Channel.sendNotification( this.sendNotification(client, eventSource, compiledMessage, user) } -fun ManagedIndexMetaData.getEventSource(title: String): EventSource { - return EventSource(title, indexUuid, SeverityType.INFO) -} +fun ManagedIndexMetaData.getEventSource(title: String): EventSource = EventSource(title, indexUuid, SeverityType.INFO) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/RestHandlerUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/RestHandlerUtils.kt index 67303098e..e033e064a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/RestHandlerUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/RestHandlerUtils.kt @@ -80,7 +80,9 @@ fun buildInvalidIndexResponse(builder: XContentBuilder, failedIndices: List { @@ -81,14 +82,12 @@ fun ToXContent.convertToMap(): Map { return XContentHelper.convertToMap(bytesReference, false, XContentType.JSON as (MediaType)).v2() } -fun XContentParser.instant(): Instant? { - return when { - currentToken() == Token.VALUE_NULL -> null - currentToken().isValue -> Instant.ofEpochMilli(longValue()) - else -> { - XContentParserUtils.throwUnknownToken(currentToken(), tokenLocation) - null // unreachable - } +fun XContentParser.instant(): Instant? = when { + currentToken() == Token.VALUE_NULL -> null + currentToken().isValue -> Instant.ofEpochMilli(longValue()) + else -> { + XContentParserUtils.throwUnknownToken(currentToken(), tokenLocation) + null // unreachable } } @@ -116,9 +115,7 @@ fun XContentBuilder.optionalISMTemplateField(name: String, ismTemplates: List parseFromSearchResponse( response: SearchResponse, xContentRegistry: NamedXContentRegistry = NamedXContentRegistry.EMPTY, parse: (xcp: XContentParser, id: String, seqNo: Long, primaryTerm: Long) -> T, -): List { - return response.hits.hits.map { - val id = it.id - val seqNo = it.seqNo - val primaryTerm = it.primaryTerm - val xcp = XContentHelper.createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, it.sourceRef, XContentType.JSON) - xcp.parseWithType(id, seqNo, primaryTerm, parse) - } +): List = response.hits.hits.map { + val id = it.id + val seqNo = it.seqNo + val primaryTerm = it.primaryTerm + val xcp = XContentHelper.createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, it.sourceRef, XContentType.JSON) + xcp.parseWithType(id, seqNo, primaryTerm, parse) } /** @@ -198,9 +193,7 @@ suspend fun BackoffPolicy.retry( * Retries on 502, 503 and 504 per elastic client's behavior: https://github.com/elastic/elasticsearch-net/issues/2061 * 429 must be retried manually as it's not clear if it's ok to retry for requests other than Bulk requests. */ -fun OpenSearchException.isRetryable(): Boolean { - return (status() in listOf(RestStatus.BAD_GATEWAY, RestStatus.SERVICE_UNAVAILABLE, RestStatus.GATEWAY_TIMEOUT)) -} +fun OpenSearchException.isRetryable(): Boolean = (status() in listOf(RestStatus.BAD_GATEWAY, RestStatus.SERVICE_UNAVAILABLE, RestStatus.GATEWAY_TIMEOUT)) /** * Extension function for OpenSearch 6.3 and above that duplicates the OpenSearch 6.2 XContentBuilder.string() method. @@ -321,29 +314,23 @@ suspend fun withClosableContext( } } -fun XContentBuilder.optionalField(name: String, value: Any?): XContentBuilder { - return if (value != null) { - this.field(name, value) - } else { - this - } +fun XContentBuilder.optionalField(name: String, value: Any?): XContentBuilder = if (value != null) { + this.field(name, value) +} else { + this } -fun XContentBuilder.optionalInfoField(name: String, info: SMMetadata.Info?): XContentBuilder { - return if (info != null) { - if (info.message != null || info.cause != null) { - this.field(name, info) - } else { - this - } +fun XContentBuilder.optionalInfoField(name: String, info: SMMetadata.Info?): XContentBuilder = if (info != null) { + if (info.message != null || info.cause != null) { + this.field(name, info) } else { this } +} else { + this } -inline fun XContentParser.nullValueHandler(block: XContentParser.() -> T): T? { - return if (currentToken() == Token.VALUE_NULL) null else block() -} +inline fun XContentParser.nullValueHandler(block: XContentParser.() -> T): T? = if (currentToken() == Token.VALUE_NULL) null else block() inline fun XContentParser.parseArray(block: XContentParser.() -> T): List { val resArr = mutableListOf() @@ -355,12 +342,10 @@ inline fun XContentParser.parseArray(block: XContentParser.() -> T): List } // similar to readOptionalWriteable -fun StreamInput.readOptionalValue(reader: Writeable.Reader): T? { - return if (readBoolean()) { - reader.read(this) - } else { - null - } +fun StreamInput.readOptionalValue(reader: Writeable.Reader): T? = if (readBoolean()) { + reader.read(this) +} else { + null } fun StreamOutput.writeOptionalValue(value: T, writer: Writeable.Writer) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RestRefreshSearchAnalyzerAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RestRefreshSearchAnalyzerAction.kt index c99afe6f5..e1700e8be 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RestRefreshSearchAnalyzerAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RestRefreshSearchAnalyzerAction.kt @@ -21,22 +21,18 @@ class RestRefreshSearchAnalyzerAction : BaseRestHandler() { override fun getName(): String = "refresh_search_analyzer_action" - override fun routes(): List { - return emptyList() - } - - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, REFRESH_SEARCH_ANALYZER_BASE_URI, - POST, LEGACY_REFRESH_SEARCH_ANALYZER_BASE_URI, - ), - ReplacedRoute( - POST, "$REFRESH_SEARCH_ANALYZER_BASE_URI/{index}", - POST, "$LEGACY_REFRESH_SEARCH_ANALYZER_BASE_URI/{index}", - ), - ) - } + override fun routes(): List = emptyList() + + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, REFRESH_SEARCH_ANALYZER_BASE_URI, + POST, LEGACY_REFRESH_SEARCH_ANALYZER_BASE_URI, + ), + ReplacedRoute( + POST, "$REFRESH_SEARCH_ANALYZER_BASE_URI/{index}", + POST, "$LEGACY_REFRESH_SEARCH_ANALYZER_BASE_URI/{index}", + ), + ) // TODO: Add indicesOptions? diff --git a/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/TransportRefreshSearchAnalyzerAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/TransportRefreshSearchAnalyzerAction.kt index 8d17ab077..03ddd8cea 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/TransportRefreshSearchAnalyzerAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/refreshanalyzer/TransportRefreshSearchAnalyzerAction.kt @@ -60,9 +60,7 @@ class TransportRefreshSearchAnalyzerAction : private val analysisRegistry: AnalysisRegistry @Throws(IOException::class) - override fun readShardResult(si: StreamInput): RefreshSearchAnalyzerShardResponse? { - return RefreshSearchAnalyzerShardResponse(si) - } + override fun readShardResult(si: StreamInput): RefreshSearchAnalyzerShardResponse? = RefreshSearchAnalyzerShardResponse(si) override fun newResponse( request: RefreshSearchAnalyzerRequest, @@ -72,14 +70,10 @@ class TransportRefreshSearchAnalyzerAction : shardResponses: List, shardFailures: List, clusterState: ClusterState, - ): RefreshSearchAnalyzerResponse { - return RefreshSearchAnalyzerResponse(totalShards, successfulShards, failedShards, shardFailures, shardResponses) - } + ): RefreshSearchAnalyzerResponse = RefreshSearchAnalyzerResponse(totalShards, successfulShards, failedShards, shardFailures, shardResponses) @Throws(IOException::class) - override fun readRequestFrom(si: StreamInput): RefreshSearchAnalyzerRequest { - return RefreshSearchAnalyzerRequest(si) - } + override fun readRequestFrom(si: StreamInput): RefreshSearchAnalyzerRequest = RefreshSearchAnalyzerRequest(si) @Throws(IOException::class) override fun shardOperation(request: RefreshSearchAnalyzerRequest, shardRouting: ShardRouting): RefreshSearchAnalyzerShardResponse { @@ -95,15 +89,12 @@ class TransportRefreshSearchAnalyzerAction : /** * The refresh request works against *all* shards. */ - override fun shards(clusterState: ClusterState, request: RefreshSearchAnalyzerRequest?, concreteIndices: Array?): ShardsIterator? { - return clusterState.routingTable().allShards(concreteIndices) - } + override fun shards(clusterState: ClusterState, request: RefreshSearchAnalyzerRequest?, concreteIndices: Array?): ShardsIterator? = + clusterState.routingTable().allShards(concreteIndices) - override fun checkGlobalBlock(state: ClusterState, request: RefreshSearchAnalyzerRequest?): ClusterBlockException? { - return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE) - } + override fun checkGlobalBlock(state: ClusterState, request: RefreshSearchAnalyzerRequest?): ClusterBlockException? = + state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE) - override fun checkRequestBlock(state: ClusterState, request: RefreshSearchAnalyzerRequest?, concreteIndices: Array?): ClusterBlockException? { - return state.blocks().indicesBlockedException(ClusterBlockLevel.METADATA_WRITE, concreteIndices) - } + override fun checkRequestBlock(state: ClusterState, request: RefreshSearchAnalyzerRequest?, concreteIndices: Array?): ClusterBlockException? = + state.blocks().indicesBlockedException(ClusterBlockLevel.METADATA_WRITE, concreteIndices) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupMetadataService.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupMetadataService.kt index d73264a77..dd44e7e64 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupMetadataService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupMetadataService.kt @@ -330,15 +330,14 @@ class RollupMetadataService(val client: Client, val xContentRegistry: NamedXCont return updateMetadata(updatedMetadata) } - suspend fun updateMetadata(metadata: RollupMetadata): RollupMetadata { - return when (val metadataUpdateResult = submitMetadataUpdate(metadata, metadata.id != NO_ID)) { + suspend fun updateMetadata(metadata: RollupMetadata): RollupMetadata = + when (val metadataUpdateResult = submitMetadataUpdate(metadata, metadata.id != NO_ID)) { is MetadataResult.Success -> metadataUpdateResult.metadata is MetadataResult.Failure -> throw RollupMetadataException("Failed to update rollup metadata [${metadata.id}]", metadataUpdateResult.cause) // NoMetadata is not expected from submitMetadataUpdate here is MetadataResult.NoMetadata -> throw RollupMetadataException("Unexpected state when updating rollup metadata [${metadata.id}]", null) } - } /** * Sets a failure metadata for the rollup job with the given reason. diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupRunner.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupRunner.kt index 7b1327d84..28a1d62ea 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupRunner.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupRunner.kt @@ -127,9 +127,7 @@ object RollupRunner : return this } - fun registerConsumers(): RollupRunner { - return this - } + fun registerConsumers(): RollupRunner = this @Suppress("ComplexMethod") override fun runJob(job: ScheduledJobParameter, context: JobExecutionContext) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupSearchService.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupSearchService.kt index 0157a90d2..2d8d65cc7 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupSearchService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/RollupSearchService.kt @@ -100,53 +100,51 @@ class RollupSearchService( } @Suppress("ComplexMethod") - suspend fun executeCompositeSearch(job: Rollup, metadata: RollupMetadata): RollupSearchResult { - return try { - var retryCount = 0 - RollupSearchResult.Success( - retrySearchPolicy.retry(logger) { - val decay = 2f.pow(retryCount++) - client.suspendUntil { listener: ActionListener -> - val pageSize = max(1, job.pageSize.div(decay.toInt())) - if (decay > 1) { - logger.warn( - "Composite search failed for rollup, retrying [#${retryCount - 1}] -" + - " reducing page size of composite aggregation from ${job.pageSize} to $pageSize", - ) - } - - val searchRequest = job.copy(pageSize = pageSize).getRollupSearchRequest(metadata) - val cancelTimeoutTimeValue = TimeValue.timeValueMinutes(getCancelAfterTimeInterval(cancelAfterTimeInterval.minutes)) - searchRequest.cancelAfterTimeInterval = cancelTimeoutTimeValue - - search(searchRequest, listener) + suspend fun executeCompositeSearch(job: Rollup, metadata: RollupMetadata): RollupSearchResult = try { + var retryCount = 0 + RollupSearchResult.Success( + retrySearchPolicy.retry(logger) { + val decay = 2f.pow(retryCount++) + client.suspendUntil { listener: ActionListener -> + val pageSize = max(1, job.pageSize.div(decay.toInt())) + if (decay > 1) { + logger.warn( + "Composite search failed for rollup, retrying [#${retryCount - 1}] -" + + " reducing page size of composite aggregation from ${job.pageSize} to $pageSize", + ) } - }, - ) - } catch (e: SearchPhaseExecutionException) { - logger.error(e.message, e.cause) - if (e.shardFailures().isEmpty()) { - RollupSearchResult.Failure(cause = ExceptionsHelper.unwrapCause(e) as Exception) - } else { - val shardFailure = e.shardFailures().reduce { s1, s2 -> if (s1.status().status > s2.status().status) s1 else s2 } - RollupSearchResult.Failure(cause = ExceptionsHelper.unwrapCause(shardFailure.cause) as Exception) - } - } catch (e: RemoteTransportException) { - logger.error(e.message, e.cause) + + val searchRequest = job.copy(pageSize = pageSize).getRollupSearchRequest(metadata) + val cancelTimeoutTimeValue = TimeValue.timeValueMinutes(getCancelAfterTimeInterval(cancelAfterTimeInterval.minutes)) + searchRequest.cancelAfterTimeInterval = cancelTimeoutTimeValue + + search(searchRequest, listener) + } + }, + ) + } catch (e: SearchPhaseExecutionException) { + logger.error(e.message, e.cause) + if (e.shardFailures().isEmpty()) { RollupSearchResult.Failure(cause = ExceptionsHelper.unwrapCause(e) as Exception) - } catch (e: CircuitBreakingException) { - logger.error(e.message, e.cause) - RollupSearchResult.Failure(cause = e) - } catch (e: MultiBucketConsumerService.TooManyBucketsException) { - logger.error(e.message, e.cause) - RollupSearchResult.Failure(cause = e) - } catch (e: OpenSearchSecurityException) { - logger.error(e.message, e.cause) - RollupSearchResult.Failure("Cannot search data in source index/s - missing required index permissions: ${e.localizedMessage}", e) - } catch (e: Exception) { - logger.error(e.message, e.cause) - RollupSearchResult.Failure(cause = e) + } else { + val shardFailure = e.shardFailures().reduce { s1, s2 -> if (s1.status().status > s2.status().status) s1 else s2 } + RollupSearchResult.Failure(cause = ExceptionsHelper.unwrapCause(shardFailure.cause) as Exception) } + } catch (e: RemoteTransportException) { + logger.error(e.message, e.cause) + RollupSearchResult.Failure(cause = ExceptionsHelper.unwrapCause(e) as Exception) + } catch (e: CircuitBreakingException) { + logger.error(e.message, e.cause) + RollupSearchResult.Failure(cause = e) + } catch (e: MultiBucketConsumerService.TooManyBucketsException) { + logger.error(e.message, e.cause) + RollupSearchResult.Failure(cause = e) + } catch (e: OpenSearchSecurityException) { + logger.error(e.message, e.cause) + RollupSearchResult.Failure("Cannot search data in source index/s - missing required index permissions: ${e.localizedMessage}", e) + } catch (e: Exception) { + logger.error(e.message, e.cause) + RollupSearchResult.Failure(cause = e) } private fun getCancelAfterTimeInterval(givenInterval: Long): Long { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/ExplainRollupResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/ExplainRollupResponse.kt index 952755163..89896c62d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/ExplainRollupResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/ExplainRollupResponse.kt @@ -14,16 +14,16 @@ import org.opensearch.core.xcontent.XContentBuilder import org.opensearch.indexmanagement.rollup.model.ExplainRollup import java.io.IOException -class ExplainRollupResponse : ActionResponse, ToXContentObject { +class ExplainRollupResponse : + ActionResponse, + ToXContentObject { val idsToExplain: Map constructor(idsToExplain: Map) : super() { this.idsToExplain = idsToExplain } - internal fun getIdsToExplain(): Map { - return this.idsToExplain - } + internal fun getIdsToExplain(): Map = this.idsToExplain @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/TransportExplainRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/TransportExplainRollupAction.kt index c1b50ab52..bc9ff5f5a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/TransportExplainRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/explain/TransportExplainRollupAction.kt @@ -104,8 +104,9 @@ class TransportExplainRollupAction @Inject constructor( response.hits.hits.forEach { val metadata = contentParser(it.sourceRef) .parseWithType(it.id, it.seqNo, it.primaryTerm, RollupMetadata.Companion::parse) - idsToExplain.computeIfPresent(metadata.rollupID) { _, - explainRollup, + idsToExplain.computeIfPresent(metadata.rollupID) { + _, + explainRollup, -> explainRollup.copy(metadata = metadata) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupResponse.kt index ca5c21d68..c6a9c30d4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupResponse.kt @@ -21,7 +21,9 @@ import org.opensearch.indexmanagement.util._SEQ_NO import org.opensearch.indexmanagement.util._VERSION import java.io.IOException -class GetRollupResponse : ActionResponse, ToXContentObject { +class GetRollupResponse : + ActionResponse, + ToXContentObject { var id: String var version: Long var seqNo: Long diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupsResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupsResponse.kt index 79100e3e5..34b7c6425 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupsResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/GetRollupsResponse.kt @@ -20,7 +20,9 @@ import org.opensearch.indexmanagement.util._PRIMARY_TERM import org.opensearch.indexmanagement.util._SEQ_NO import java.io.IOException -class GetRollupsResponse : ActionResponse, ToXContentObject { +class GetRollupsResponse : + ActionResponse, + ToXContentObject { val rollups: List val totalRollups: Int val status: RestStatus @@ -50,21 +52,19 @@ class GetRollupsResponse : ActionResponse, ToXContentObject { } @Throws(IOException::class) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field("total_rollups", totalRollups) - .startArray("rollups") - .apply { - for (rollup in rollups) { - this.startObject() - .field(_ID, rollup.id) - .field(_SEQ_NO, rollup.seqNo) - .field(_PRIMARY_TERM, rollup.primaryTerm) - .field(ROLLUP_TYPE, rollup, XCONTENT_WITHOUT_TYPE_AND_USER) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field("total_rollups", totalRollups) + .startArray("rollups") + .apply { + for (rollup in rollups) { + this.startObject() + .field(_ID, rollup.id) + .field(_SEQ_NO, rollup.seqNo) + .field(_PRIMARY_TERM, rollup.primaryTerm) + .field(ROLLUP_TYPE, rollup, XCONTENT_WITHOUT_TYPE_AND_USER) + .endObject() } - .endArray() - .endObject() - } + } + .endArray() + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupAction.kt index 1e6e419c7..6e888051b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupAction.kt @@ -36,7 +36,7 @@ class TransportGetRollupAction @Inject constructor( val settings: Settings, val clusterService: ClusterService, val xContentRegistry: NamedXContentRegistry, -) : HandledTransportAction ( +) : HandledTransportAction( GetRollupAction.NAME, transportService, actionFilters, ::GetRollupRequest, ) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupsAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupsAction.kt index 19271527d..2f366afc9 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupsAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/get/TransportGetRollupsAction.kt @@ -43,7 +43,7 @@ class TransportGetRollupsAction @Inject constructor( val clusterService: ClusterService, val settings: Settings, val xContentRegistry: NamedXContentRegistry, -) : HandledTransportAction ( +) : HandledTransportAction( GetRollupsAction.NAME, transportService, actionFilters, ::GetRollupsRequest, ) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/index/IndexRollupResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/index/IndexRollupResponse.kt index 1fd220815..0a804c0f2 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/index/IndexRollupResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/index/IndexRollupResponse.kt @@ -21,7 +21,9 @@ import org.opensearch.indexmanagement.util._SEQ_NO import org.opensearch.indexmanagement.util._VERSION import java.io.IOException -class IndexRollupResponse : ActionResponse, ToXContentObject { +class IndexRollupResponse : + ActionResponse, + ToXContentObject { var id: String var version: Long var seqNo: Long @@ -66,13 +68,11 @@ class IndexRollupResponse : ActionResponse, ToXContentObject { } @Throws(IOException::class) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(_ID, id) - .field(_VERSION, version) - .field(_SEQ_NO, seqNo) - .field(_PRIMARY_TERM, primaryTerm) - .field(ROLLUP_TYPE, rollup, XCONTENT_WITHOUT_TYPE_AND_USER) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(_ID, id) + .field(_VERSION, version) + .field(_SEQ_NO, seqNo) + .field(_PRIMARY_TERM, primaryTerm) + .field(ROLLUP_TYPE, rollup, XCONTENT_WITHOUT_TYPE_AND_USER) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/mapping/UpdateRollupMappingRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/mapping/UpdateRollupMappingRequest.kt index ec114b944..661ba42d4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/mapping/UpdateRollupMappingRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/action/mapping/UpdateRollupMappingRequest.kt @@ -22,9 +22,7 @@ class UpdateRollupMappingRequest : AcknowledgedRequest, - ): TransportRequestHandler { - return object : TransportRequestHandler { - override fun messageReceived(request: T, channel: TransportChannel, task: Task) { - if (searchEnabled && request is ShardSearchRequest) { - val index = request.shardId().indexName - val isRollupIndex = isRollupIndex(index, clusterService.state()) - if (isRollupIndex) { - if (request.source().size() != 0) { - throw IllegalArgumentException("Rollup search must have size explicitly set to 0, but found ${request.source().size()}") - } + ): TransportRequestHandler = object : TransportRequestHandler { + override fun messageReceived(request: T, channel: TransportChannel, task: Task) { + if (searchEnabled && request is ShardSearchRequest) { + val index = request.shardId().indexName + val isRollupIndex = isRollupIndex(index, clusterService.state()) + if (isRollupIndex) { + if (request.source().size() != 0) { + throw IllegalArgumentException("Rollup search must have size explicitly set to 0, but found ${request.source().size()}") + } - val indices = request.indices().map { it.toString() }.toTypedArray() - val concreteIndices = indexNameExpressionResolver - .concreteIndexNames(clusterService.state(), request.indicesOptions(), *indices) - // To extract fields from QueryStringQueryBuilder we need concrete source index name. - val rollupJob = clusterService.state().metadata.index(index).getRollupJobs()?.get(0) - ?: throw IllegalArgumentException("No rollup job associated with target_index") - val queryFieldMappings = getQueryMetadata( - request.source().query(), - getConcreteSourceIndex(rollupJob.sourceIndex, indexNameExpressionResolver, clusterService.state()), - ) - val aggregationFieldMappings = getAggregationMetadata(request.source().aggregations()?.aggregatorFactories) - val fieldMappings = queryFieldMappings + aggregationFieldMappings + val indices = request.indices().map { it.toString() }.toTypedArray() + val concreteIndices = indexNameExpressionResolver + .concreteIndexNames(clusterService.state(), request.indicesOptions(), *indices) + // To extract fields from QueryStringQueryBuilder we need concrete source index name. + val rollupJob = clusterService.state().metadata.index(index).getRollupJobs()?.get(0) + ?: throw IllegalArgumentException("No rollup job associated with target_index") + val queryFieldMappings = getQueryMetadata( + request.source().query(), + getConcreteSourceIndex(rollupJob.sourceIndex, indexNameExpressionResolver, clusterService.state()), + ) + val aggregationFieldMappings = getAggregationMetadata(request.source().aggregations()?.aggregatorFactories) + val fieldMappings = queryFieldMappings + aggregationFieldMappings - val allMatchingRollupJobs = validateIndicies(concreteIndices, fieldMappings) + val allMatchingRollupJobs = validateIndicies(concreteIndices, fieldMappings) - // only rebuild if there is necessity to rebuild - if (fieldMappings.isNotEmpty()) { - rewriteShardSearchForRollupJobs(request, allMatchingRollupJobs) - } + // only rebuild if there is necessity to rebuild + if (fieldMappings.isNotEmpty()) { + rewriteShardSearchForRollupJobs(request, allMatchingRollupJobs) } } - actualHandler.messageReceived(request, channel, task) } + actualHandler.messageReceived(request, channel, task) } } @@ -233,7 +231,8 @@ class RollupInterceptor( query.innerQueries().forEach { this.getQueryMetadata(it, concreteSourceIndexName, fieldMappings) } } is MatchPhraseQueryBuilder -> { - if (!query.analyzer().isNullOrEmpty() || query.slop() != MatchQuery.DEFAULT_PHRASE_SLOP || + if (!query.analyzer().isNullOrEmpty() || + query.slop() != MatchQuery.DEFAULT_PHRASE_SLOP || query.zeroTermsQuery() != MatchQuery.DEFAULT_ZERO_TERMS_QUERY ) { throw IllegalArgumentException( @@ -327,12 +326,10 @@ class RollupInterceptor( } } - private fun getEstimateRollupInterval(rollup: Rollup): Long { - return if (rollup.getDateHistogram().calendarInterval != null) { - DateHistogramInterval(rollup.getDateHistogram().calendarInterval).estimateMillis() - } else { - DateHistogramInterval(rollup.getDateHistogram().fixedInterval).estimateMillis() - } + private fun getEstimateRollupInterval(rollup: Rollup): Long = if (rollup.getDateHistogram().calendarInterval != null) { + DateHistogramInterval(rollup.getDateHistogram().calendarInterval).estimateMillis() + } else { + DateHistogramInterval(rollup.getDateHistogram().fixedInterval).estimateMillis() } private fun rewriteShardSearchForRollupJobs(request: ShardSearchRequest, matchingRollupJobs: Map>) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ExplainRollup.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ExplainRollup.kt index 05b84db6e..0b5b42bc6 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ExplainRollup.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ExplainRollup.kt @@ -16,7 +16,8 @@ import java.io.IOException data class ExplainRollup( val metadataID: String? = null, val metadata: RollupMetadata? = null, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -32,10 +33,8 @@ data class ExplainRollup( } @Throws(IOException::class) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(Rollup.METADATA_ID_FIELD, metadataID) - .field(RollupMetadata.ROLLUP_METADATA_TYPE, metadata) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(Rollup.METADATA_ID_FIELD, metadataID) + .field(RollupMetadata.ROLLUP_METADATA_TYPE, metadata) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ISMRollup.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ISMRollup.kt index 35df4771f..972597ab4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ISMRollup.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/ISMRollup.kt @@ -32,7 +32,8 @@ data class ISMRollup( val pageSize: Int, val dimensions: List, val metrics: List, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { // TODO: This can be moved to a common place, since this is shared between Rollup and ISMRollup init { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/Rollup.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/Rollup.kt index e9309d86a..70e02debd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/Rollup.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/Rollup.kt @@ -55,7 +55,8 @@ data class Rollup( val dimensions: List, val metrics: List, val user: User? = null, -) : ScheduledJobParameter, Writeable { +) : ScheduledJobParameter, + Writeable { init { if (enabled) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupFieldMapping.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupFieldMapping.kt index 86f98cf5f..dac4fda5d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupFieldMapping.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupFieldMapping.kt @@ -14,9 +14,7 @@ data class RollupFieldMapping(val fieldType: FieldType, val fieldName: String, v this.sourceType = type } - override fun toString(): String { - return "$fieldName.$mappingType" - } + override fun toString(): String = "$fieldName.$mappingType" fun toIssue(isFieldMissing: Boolean = false): String { return if (isFieldMissing || mappingType == UNKNOWN_MAPPING) { @@ -36,9 +34,7 @@ data class RollupFieldMapping(val fieldType: FieldType, val fieldName: String, v METRIC(METRICS_FIELD), ; - override fun toString(): String { - return type - } + override fun toString(): String = type } } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetadata.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetadata.kt index 910059ce5..40f59ca3b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetadata.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetadata.kt @@ -27,7 +27,8 @@ import java.util.Locale data class ContinuousMetadata( val nextWindowStartTime: Instant, val nextWindowEndTime: Instant, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -35,12 +36,10 @@ data class ContinuousMetadata( nextWindowEndTime = sin.readInstant(), ) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .timeField(NEXT_WINDOW_START_TIME_FIELD, NEXT_WINDOW_START_TIME_FIELD_IN_MILLIS, nextWindowStartTime.toEpochMilli()) - .timeField(NEXT_WINDOW_END_TIME_FIELD, NEXT_WINDOW_END_TIME_FIELD_IN_MILLIS, nextWindowEndTime.toEpochMilli()) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .timeField(NEXT_WINDOW_START_TIME_FIELD, NEXT_WINDOW_START_TIME_FIELD_IN_MILLIS, nextWindowStartTime.toEpochMilli()) + .timeField(NEXT_WINDOW_END_TIME_FIELD, NEXT_WINDOW_END_TIME_FIELD_IN_MILLIS, nextWindowEndTime.toEpochMilli()) + .endObject() override fun writeTo(out: StreamOutput) { out.writeInstant(nextWindowStartTime) @@ -85,7 +84,8 @@ data class RollupStats( val rollupsIndexed: Long, val indexTimeInMillis: Long, val searchTimeInMillis: Long, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -96,15 +96,13 @@ data class RollupStats( searchTimeInMillis = sin.readLong(), ) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(PAGES_PROCESSED_FIELD, pagesProcessed) - .field(DOCUMENTS_PROCESSED_FIELD, documentsProcessed) - .field(ROLLUPS_INDEXED_FIELD, rollupsIndexed) - .field(INDEX_TIME_IN_MILLIS_FIELD, indexTimeInMillis) - .field(SEARCH_TIME_IN_MILLIS_FIELD, searchTimeInMillis) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(PAGES_PROCESSED_FIELD, pagesProcessed) + .field(DOCUMENTS_PROCESSED_FIELD, documentsProcessed) + .field(ROLLUPS_INDEXED_FIELD, rollupsIndexed) + .field(INDEX_TIME_IN_MILLIS_FIELD, indexTimeInMillis) + .field(SEARCH_TIME_IN_MILLIS_FIELD, searchTimeInMillis) + .endObject() override fun writeTo(out: StreamOutput) { out.writeLong(pagesProcessed) @@ -167,7 +165,8 @@ data class RollupMetadata( val status: Status, val failureReason: String? = null, val stats: RollupStats, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { enum class Status(val type: String) { INIT("init"), @@ -178,9 +177,7 @@ data class RollupMetadata( RETRY("retry"), ; - override fun toString(): String { - return type - } + override fun toString(): String = type } @Throws(IOException::class) @@ -292,25 +289,21 @@ data class RollupMetadata( } } -fun RollupMetadata.incrementStats(response: SearchResponse, internalComposite: InternalComposite): RollupMetadata { - return this.copy( - stats = this.stats.copy( - pagesProcessed = stats.pagesProcessed + 1L, - documentsProcessed = stats.documentsProcessed + - internalComposite.buckets.fold(0L) { acc, internalBucket -> acc + internalBucket.docCount }, - searchTimeInMillis = stats.searchTimeInMillis + response.took.millis, - ), - ) -} - -fun RollupMetadata.mergeStats(stats: RollupStats): RollupMetadata { - return this.copy( - stats = this.stats.copy( - pagesProcessed = this.stats.pagesProcessed + stats.pagesProcessed, - documentsProcessed = this.stats.documentsProcessed + stats.documentsProcessed, - rollupsIndexed = this.stats.rollupsIndexed + stats.rollupsIndexed, - indexTimeInMillis = this.stats.indexTimeInMillis + stats.indexTimeInMillis, - searchTimeInMillis = this.stats.searchTimeInMillis + stats.searchTimeInMillis, - ), - ) -} +fun RollupMetadata.incrementStats(response: SearchResponse, internalComposite: InternalComposite): RollupMetadata = this.copy( + stats = this.stats.copy( + pagesProcessed = stats.pagesProcessed + 1L, + documentsProcessed = stats.documentsProcessed + + internalComposite.buckets.fold(0L) { acc, internalBucket -> acc + internalBucket.docCount }, + searchTimeInMillis = stats.searchTimeInMillis + response.took.millis, + ), +) + +fun RollupMetadata.mergeStats(stats: RollupStats): RollupMetadata = this.copy( + stats = this.stats.copy( + pagesProcessed = this.stats.pagesProcessed + stats.pagesProcessed, + documentsProcessed = this.stats.documentsProcessed + stats.documentsProcessed, + rollupsIndexed = this.stats.rollupsIndexed + stats.rollupsIndexed, + indexTimeInMillis = this.stats.indexTimeInMillis + stats.indexTimeInMillis, + searchTimeInMillis = this.stats.searchTimeInMillis + stats.searchTimeInMillis, + ), +) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetrics.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetrics.kt index 4bcbdb349..6a0932f37 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetrics.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/RollupMetrics.kt @@ -26,7 +26,8 @@ data class RollupMetrics( val sourceField: String, val targetField: String, val metrics: List, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { require(metrics.size == metrics.distinctBy { it.type }.size) { @@ -59,12 +60,10 @@ data class RollupMetrics( }, ) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(SOURCE_FIELD_FIELD, sourceField) - .field(METRICS_FIELD, metrics.toTypedArray()) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(SOURCE_FIELD_FIELD, sourceField) + .field(METRICS_FIELD, metrics.toTypedArray()) + .endObject() override fun writeTo(out: StreamOutput) { out.writeString(sourceField) @@ -82,15 +81,13 @@ data class RollupMetrics( } } - fun targetFieldWithType(metric: Metric): String { - return when (metric) { - is Average -> "$targetField.avg" - is Sum -> "$targetField.sum" - is Max -> "$targetField.max" - is Min -> "$targetField.min" - is ValueCount -> "$targetField.value_count" - else -> throw IllegalArgumentException("Found unsupported metric aggregation ${metric.type.type}") - } + fun targetFieldWithType(metric: Metric): String = when (metric) { + is Average -> "$targetField.avg" + is Sum -> "$targetField.sum" + is Max -> "$targetField.max" + is Min -> "$targetField.min" + is ValueCount -> "$targetField.value_count" + else -> throw IllegalArgumentException("Found unsupported metric aggregation ${metric.type.type}") } companion object { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Average.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Average.kt index c337f7919..76f61b72a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Average.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Average.kt @@ -18,9 +18,8 @@ class Average() : Metric(Type.AVERAGE) { @Suppress("UNUSED_PARAMETER") constructor(sin: StreamInput) : this() - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject().startObject(Type.AVERAGE.type).endObject().endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = + builder.startObject().startObject(Type.AVERAGE.type).endObject().endObject() override fun writeTo(out: StreamOutput) { /* nothing to write */ } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Max.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Max.kt index 1cfd2f8f0..39c76dc54 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Max.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Max.kt @@ -17,9 +17,8 @@ class Max() : Metric(Type.MAX) { @Suppress("UNUSED_PARAMETER") constructor(sin: StreamInput) : this() - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject().startObject(Type.MAX.type).endObject().endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = + builder.startObject().startObject(Type.MAX.type).endObject().endObject() override fun writeTo(out: StreamOutput) { /* nothing to write */ } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Metric.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Metric.kt index 9d92f3eca..dcb0ae7a8 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Metric.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Metric.kt @@ -12,7 +12,9 @@ import org.opensearch.core.xcontent.XContentParser.Token import org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken import java.io.IOException -abstract class Metric(val type: Type) : ToXContentObject, Writeable { +abstract class Metric(val type: Type) : + ToXContentObject, + Writeable { enum class Type(val type: String) { AVERAGE("avg"), @@ -22,9 +24,7 @@ abstract class Metric(val type: Type) : ToXContentObject, Writeable { VALUE_COUNT("value_count"), ; - override fun toString(): String { - return type - } + override fun toString(): String = type } companion object { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Min.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Min.kt index 02e6afaa0..2c738ed3a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Min.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Min.kt @@ -17,9 +17,8 @@ class Min() : Metric(Type.MIN) { @Suppress("UNUSED_PARAMETER") constructor(sin: StreamInput) : this() - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject().startObject(Type.MIN.type).endObject().endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = + builder.startObject().startObject(Type.MIN.type).endObject().endObject() override fun writeTo(out: StreamOutput) { /* nothing to write */ } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Sum.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Sum.kt index 0be69fd14..2624465ed 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Sum.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/Sum.kt @@ -17,9 +17,8 @@ class Sum() : Metric(Type.SUM) { @Suppress("UNUSED_PARAMETER") constructor(sin: StreamInput) : this() - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject().startObject(Type.SUM.type).endObject().endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = + builder.startObject().startObject(Type.SUM.type).endObject().endObject() override fun writeTo(out: StreamOutput) { /* nothing to write */ } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/ValueCount.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/ValueCount.kt index c58398be9..a6dee1656 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/ValueCount.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/model/metric/ValueCount.kt @@ -17,9 +17,8 @@ class ValueCount() : Metric(Type.VALUE_COUNT) { @Suppress("UNUSED_PARAMETER") constructor(sin: StreamInput) : this() - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject().startObject(Type.VALUE_COUNT.type).endObject().endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = + builder.startObject().startObject(Type.VALUE_COUNT.type).endObject().endObject() override fun writeTo(out: StreamOutput) { /* nothing to write */ } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestDeleteRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestDeleteRollupAction.kt index 86a62f5d2..90e658fd4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestDeleteRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestDeleteRollupAction.kt @@ -22,18 +22,14 @@ import java.io.IOException class RestDeleteRollupAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - DELETE, "$ROLLUP_JOBS_BASE_URI/{rollupID}", - DELETE, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + DELETE, "$ROLLUP_JOBS_BASE_URI/{rollupID}", + DELETE, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", + ), + ) override fun getName(): String = "opendistro_delete_rollup_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestExplainRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestExplainRollupAction.kt index d71bcade7..29806f1f6 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestExplainRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestExplainRollupAction.kt @@ -20,18 +20,14 @@ import org.opensearch.rest.action.RestToXContentListener class RestExplainRollupAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - GET, "$ROLLUP_JOBS_BASE_URI/{rollupID}/_explain", - GET, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}/_explain", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + GET, "$ROLLUP_JOBS_BASE_URI/{rollupID}/_explain", + GET, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}/_explain", + ), + ) override fun getName(): String = "opendistro_explain_rollup_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestGetRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestGetRollupAction.kt index ae174b510..6464e34c1 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestGetRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestGetRollupAction.kt @@ -28,30 +28,24 @@ import org.opensearch.search.fetch.subphase.FetchSourceContext class RestGetRollupAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - GET, ROLLUP_JOBS_BASE_URI, - GET, LEGACY_ROLLUP_JOBS_BASE_URI, - ), - ReplacedRoute( - GET, "$ROLLUP_JOBS_BASE_URI/{rollupID}", - GET, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", - ), - ReplacedRoute( - HEAD, "$ROLLUP_JOBS_BASE_URI/{rollupID}", - HEAD, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + GET, ROLLUP_JOBS_BASE_URI, + GET, LEGACY_ROLLUP_JOBS_BASE_URI, + ), + ReplacedRoute( + GET, "$ROLLUP_JOBS_BASE_URI/{rollupID}", + GET, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", + ), + ReplacedRoute( + HEAD, "$ROLLUP_JOBS_BASE_URI/{rollupID}", + HEAD, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", + ), + ) - override fun getName(): String { - return "opendistro_get_rollup_action" - } + override fun getName(): String = "opendistro_get_rollup_action" override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val rollupID = request.param("rollupID") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestIndexRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestIndexRollupAction.kt index b09f1d2cb..8bd429639 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestIndexRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestIndexRollupAction.kt @@ -36,26 +36,20 @@ import java.time.Instant class RestIndexRollupAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - PUT, ROLLUP_JOBS_BASE_URI, - PUT, LEGACY_ROLLUP_JOBS_BASE_URI, - ), - ReplacedRoute( - PUT, "$ROLLUP_JOBS_BASE_URI/{rollupID}", - PUT, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + PUT, ROLLUP_JOBS_BASE_URI, + PUT, LEGACY_ROLLUP_JOBS_BASE_URI, + ), + ReplacedRoute( + PUT, "$ROLLUP_JOBS_BASE_URI/{rollupID}", + PUT, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}", + ), + ) - override fun getName(): String { - return "opendistro_index_rollup_action" - } + override fun getName(): String = "opendistro_index_rollup_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStartRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStartRollupAction.kt index f2692ed76..547dbfa24 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStartRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStartRollupAction.kt @@ -22,22 +22,16 @@ import java.io.IOException class RestStartRollupAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, "$ROLLUP_JOBS_BASE_URI/{rollupID}/_start", - POST, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}/_start", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, "$ROLLUP_JOBS_BASE_URI/{rollupID}/_start", + POST, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}/_start", + ), + ) - override fun getName(): String { - return "opendistro_start_rollup_action" - } + override fun getName(): String = "opendistro_start_rollup_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStopRollupAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStopRollupAction.kt index 57447ce3b..09235d186 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStopRollupAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/resthandler/RestStopRollupAction.kt @@ -22,22 +22,16 @@ import java.io.IOException class RestStopRollupAction : BaseRestHandler() { - override fun routes(): List { - return emptyList() - } + override fun routes(): List = emptyList() - override fun replacedRoutes(): List { - return listOf( - ReplacedRoute( - POST, "$ROLLUP_JOBS_BASE_URI/{rollupID}/_stop", - POST, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}/_stop", - ), - ) - } + override fun replacedRoutes(): List = listOf( + ReplacedRoute( + POST, "$ROLLUP_JOBS_BASE_URI/{rollupID}/_stop", + POST, "$LEGACY_ROLLUP_JOBS_BASE_URI/{rollupID}/_stop", + ), + ) - override fun getName(): String { - return "opendistro_stop_rollup_action" - } + override fun getName(): String = "opendistro_stop_rollup_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupFieldValueExpressionResolver.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupFieldValueExpressionResolver.kt index f800b54cd..ac247ceb0 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupFieldValueExpressionResolver.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupFieldValueExpressionResolver.kt @@ -64,16 +64,11 @@ object RollupFieldValueExpressionResolver { return false } - open fun isAlias(index: String): Boolean { - return this.clusterService.state().metadata().indicesLookup?.get(index) is IndexAbstraction.Alias - } + open fun isAlias(index: String): Boolean = this.clusterService.state().metadata().indicesLookup?.get(index) is IndexAbstraction.Alias - open fun getWriteIndexNameForAlias(alias: String): String? { - return this.clusterService.state().metadata().indicesLookup?.get(alias)?.writeIndex?.index?.name - } + open fun getWriteIndexNameForAlias(alias: String): String? = this.clusterService.state().metadata().indicesLookup?.get(alias)?.writeIndex?.index?.name - open fun getBackingIndicesForAlias(alias: String): MutableList? { - return this.clusterService.state().metadata().indicesLookup?.get(alias)?.indices - } + open fun getBackingIndicesForAlias(alias: String): MutableList? = + this.clusterService.state().metadata().indicesLookup?.get(alias)?.indices } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupUtils.kt index 46edba76e..58a79066a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/rollup/util/RollupUtils.kt @@ -79,9 +79,7 @@ fun isRollupIndex(index: String, clusterState: ClusterState): Boolean { return false } -fun Rollup.isTargetIndexAlias(): Boolean { - return RollupFieldValueExpressionResolver.indexAliasUtils.isAlias(targetIndex) -} +fun Rollup.isTargetIndexAlias(): Boolean = RollupFieldValueExpressionResolver.indexAliasUtils.isAlias(targetIndex) fun Rollup.getRollupSearchRequest(metadata: RollupMetadata): SearchRequest { val query = if (metadata.continuous != null) { @@ -295,91 +293,89 @@ fun Rollup.rewriteQueryBuilder( queryBuilder: QueryBuilder, fieldNameMappingTypeMap: Map, concreteIndexName: String = "", -): QueryBuilder { - return when (queryBuilder) { - is TermQueryBuilder -> { - val updatedFieldName = queryBuilder.fieldName() + "." + Dimension.Type.TERMS.type - val updatedTermQueryBuilder = TermQueryBuilder(updatedFieldName, queryBuilder.value()) - updatedTermQueryBuilder.boost(queryBuilder.boost()) - updatedTermQueryBuilder.queryName(queryBuilder.queryName()) - } - is TermsQueryBuilder -> { - val updatedFieldName = queryBuilder.fieldName() + "." + Dimension.Type.TERMS.type - val updatedTermsQueryBuilder = TermsQueryBuilder(updatedFieldName, queryBuilder.values()) - updatedTermsQueryBuilder.boost(queryBuilder.boost()) - updatedTermsQueryBuilder.queryName(queryBuilder.queryName()) - } - is RangeQueryBuilder -> { - val updatedFieldName = queryBuilder.fieldName() + "." + fieldNameMappingTypeMap.getValue(queryBuilder.fieldName()) - val updatedRangeQueryBuilder = RangeQueryBuilder(updatedFieldName) - updatedRangeQueryBuilder.includeLower(queryBuilder.includeLower()) - updatedRangeQueryBuilder.includeUpper(queryBuilder.includeUpper()) - updatedRangeQueryBuilder.from(queryBuilder.from()) - updatedRangeQueryBuilder.to(queryBuilder.to()) - if (queryBuilder.timeZone() != null) updatedRangeQueryBuilder.timeZone(queryBuilder.timeZone()) - if (queryBuilder.format() != null) updatedRangeQueryBuilder.format(queryBuilder.format()) - if (queryBuilder.relation()?.relationName != null) updatedRangeQueryBuilder.relation(queryBuilder.relation().relationName) - updatedRangeQueryBuilder.queryName(queryBuilder.queryName()) - updatedRangeQueryBuilder.boost(queryBuilder.boost()) - } - is BoolQueryBuilder -> { - val newBoolQueryBuilder = BoolQueryBuilder() - queryBuilder.must()?.forEach { - val newMustQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) - newBoolQueryBuilder.must(newMustQueryBuilder) - } - queryBuilder.mustNot()?.forEach { - val newMustNotQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) - newBoolQueryBuilder.mustNot(newMustNotQueryBuilder) - } - queryBuilder.should()?.forEach { - val newShouldQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) - newBoolQueryBuilder.should(newShouldQueryBuilder) - } - queryBuilder.filter()?.forEach { - val newFilterQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) - newBoolQueryBuilder.filter(newFilterQueryBuilder) - } - newBoolQueryBuilder.minimumShouldMatch(queryBuilder.minimumShouldMatch()) - newBoolQueryBuilder.adjustPureNegative(queryBuilder.adjustPureNegative()) - newBoolQueryBuilder.queryName(queryBuilder.queryName()) - newBoolQueryBuilder.boost(queryBuilder.boost()) - } - is BoostingQueryBuilder -> { - val newPositiveQueryBuilder = this.rewriteQueryBuilder(queryBuilder.positiveQuery(), fieldNameMappingTypeMap, concreteIndexName) - val newNegativeQueryBuilder = this.rewriteQueryBuilder(queryBuilder.negativeQuery(), fieldNameMappingTypeMap, concreteIndexName) - val newBoostingQueryBuilder = BoostingQueryBuilder(newPositiveQueryBuilder, newNegativeQueryBuilder) - if (queryBuilder.negativeBoost() >= 0) newBoostingQueryBuilder.negativeBoost(queryBuilder.negativeBoost()) - newBoostingQueryBuilder.queryName(queryBuilder.queryName()) - newBoostingQueryBuilder.boost(queryBuilder.boost()) +): QueryBuilder = when (queryBuilder) { + is TermQueryBuilder -> { + val updatedFieldName = queryBuilder.fieldName() + "." + Dimension.Type.TERMS.type + val updatedTermQueryBuilder = TermQueryBuilder(updatedFieldName, queryBuilder.value()) + updatedTermQueryBuilder.boost(queryBuilder.boost()) + updatedTermQueryBuilder.queryName(queryBuilder.queryName()) + } + is TermsQueryBuilder -> { + val updatedFieldName = queryBuilder.fieldName() + "." + Dimension.Type.TERMS.type + val updatedTermsQueryBuilder = TermsQueryBuilder(updatedFieldName, queryBuilder.values()) + updatedTermsQueryBuilder.boost(queryBuilder.boost()) + updatedTermsQueryBuilder.queryName(queryBuilder.queryName()) + } + is RangeQueryBuilder -> { + val updatedFieldName = queryBuilder.fieldName() + "." + fieldNameMappingTypeMap.getValue(queryBuilder.fieldName()) + val updatedRangeQueryBuilder = RangeQueryBuilder(updatedFieldName) + updatedRangeQueryBuilder.includeLower(queryBuilder.includeLower()) + updatedRangeQueryBuilder.includeUpper(queryBuilder.includeUpper()) + updatedRangeQueryBuilder.from(queryBuilder.from()) + updatedRangeQueryBuilder.to(queryBuilder.to()) + if (queryBuilder.timeZone() != null) updatedRangeQueryBuilder.timeZone(queryBuilder.timeZone()) + if (queryBuilder.format() != null) updatedRangeQueryBuilder.format(queryBuilder.format()) + if (queryBuilder.relation()?.relationName != null) updatedRangeQueryBuilder.relation(queryBuilder.relation().relationName) + updatedRangeQueryBuilder.queryName(queryBuilder.queryName()) + updatedRangeQueryBuilder.boost(queryBuilder.boost()) + } + is BoolQueryBuilder -> { + val newBoolQueryBuilder = BoolQueryBuilder() + queryBuilder.must()?.forEach { + val newMustQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) + newBoolQueryBuilder.must(newMustQueryBuilder) } - is ConstantScoreQueryBuilder -> { - val newInnerQueryBuilder = this.rewriteQueryBuilder(queryBuilder.innerQuery(), fieldNameMappingTypeMap, concreteIndexName) - val newConstantScoreQueryBuilder = ConstantScoreQueryBuilder(newInnerQueryBuilder) - newConstantScoreQueryBuilder.boost(queryBuilder.boost()) - newConstantScoreQueryBuilder.queryName(queryBuilder.queryName()) + queryBuilder.mustNot()?.forEach { + val newMustNotQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) + newBoolQueryBuilder.mustNot(newMustNotQueryBuilder) } - is DisMaxQueryBuilder -> { - val newDisMaxQueryBuilder = DisMaxQueryBuilder() - queryBuilder.innerQueries().forEach { - newDisMaxQueryBuilder.add(this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName)) - } - newDisMaxQueryBuilder.tieBreaker(queryBuilder.tieBreaker()) - newDisMaxQueryBuilder.queryName(queryBuilder.queryName()) - newDisMaxQueryBuilder.boost(queryBuilder.boost()) + queryBuilder.should()?.forEach { + val newShouldQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) + newBoolQueryBuilder.should(newShouldQueryBuilder) } - is MatchPhraseQueryBuilder -> { - val newFieldName = queryBuilder.fieldName() + "." + Dimension.Type.TERMS.type - val newMatchPhraseQueryBuilder = MatchPhraseQueryBuilder(newFieldName, queryBuilder.value()) - newMatchPhraseQueryBuilder.queryName(queryBuilder.queryName()) - newMatchPhraseQueryBuilder.boost(queryBuilder.boost()) + queryBuilder.filter()?.forEach { + val newFilterQueryBuilder = this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName) + newBoolQueryBuilder.filter(newFilterQueryBuilder) } - is QueryStringQueryBuilder -> { - QueryStringQueryUtil.rewriteQueryStringQuery(queryBuilder, concreteIndexName) + newBoolQueryBuilder.minimumShouldMatch(queryBuilder.minimumShouldMatch()) + newBoolQueryBuilder.adjustPureNegative(queryBuilder.adjustPureNegative()) + newBoolQueryBuilder.queryName(queryBuilder.queryName()) + newBoolQueryBuilder.boost(queryBuilder.boost()) + } + is BoostingQueryBuilder -> { + val newPositiveQueryBuilder = this.rewriteQueryBuilder(queryBuilder.positiveQuery(), fieldNameMappingTypeMap, concreteIndexName) + val newNegativeQueryBuilder = this.rewriteQueryBuilder(queryBuilder.negativeQuery(), fieldNameMappingTypeMap, concreteIndexName) + val newBoostingQueryBuilder = BoostingQueryBuilder(newPositiveQueryBuilder, newNegativeQueryBuilder) + if (queryBuilder.negativeBoost() >= 0) newBoostingQueryBuilder.negativeBoost(queryBuilder.negativeBoost()) + newBoostingQueryBuilder.queryName(queryBuilder.queryName()) + newBoostingQueryBuilder.boost(queryBuilder.boost()) + } + is ConstantScoreQueryBuilder -> { + val newInnerQueryBuilder = this.rewriteQueryBuilder(queryBuilder.innerQuery(), fieldNameMappingTypeMap, concreteIndexName) + val newConstantScoreQueryBuilder = ConstantScoreQueryBuilder(newInnerQueryBuilder) + newConstantScoreQueryBuilder.boost(queryBuilder.boost()) + newConstantScoreQueryBuilder.queryName(queryBuilder.queryName()) + } + is DisMaxQueryBuilder -> { + val newDisMaxQueryBuilder = DisMaxQueryBuilder() + queryBuilder.innerQueries().forEach { + newDisMaxQueryBuilder.add(this.rewriteQueryBuilder(it, fieldNameMappingTypeMap, concreteIndexName)) } - // We do nothing otherwise, the validation logic should have already verified so not throwing an exception - else -> queryBuilder + newDisMaxQueryBuilder.tieBreaker(queryBuilder.tieBreaker()) + newDisMaxQueryBuilder.queryName(queryBuilder.queryName()) + newDisMaxQueryBuilder.boost(queryBuilder.boost()) + } + is MatchPhraseQueryBuilder -> { + val newFieldName = queryBuilder.fieldName() + "." + Dimension.Type.TERMS.type + val newMatchPhraseQueryBuilder = MatchPhraseQueryBuilder(newFieldName, queryBuilder.value()) + newMatchPhraseQueryBuilder.queryName(queryBuilder.queryName()) + newMatchPhraseQueryBuilder.boost(queryBuilder.boost()) + } + is QueryStringQueryBuilder -> { + QueryStringQueryUtil.rewriteQueryStringQuery(queryBuilder, concreteIndexName) } + // We do nothing otherwise, the validation logic should have already verified so not throwing an exception + else -> queryBuilder } fun Set.buildRollupQuery(fieldNameMappingTypeMap: Map, oldQuery: QueryBuilder, targetIndexName: String = ""): QueryBuilder { @@ -448,9 +444,7 @@ fun SearchSourceBuilder.rewriteSearchSourceBuilder( job: Rollup, fieldNameMappingTypeMap: Map, concreteIndexName: String, -): SearchSourceBuilder { - return this.rewriteSearchSourceBuilder(setOf(job), fieldNameMappingTypeMap, concreteIndexName) -} +): SearchSourceBuilder = this.rewriteSearchSourceBuilder(setOf(job), fieldNameMappingTypeMap, concreteIndexName) fun Rollup.getInitialDocValues(docCount: Long): MutableMap = mutableMapOf( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/SMUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/SMUtils.kt index bed4ebc20..03200d7ce 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/SMUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/SMUtils.kt @@ -173,16 +173,14 @@ fun generateFormatDate(dateFormat: String, timezone: ZoneId = ZoneId.of("UTC")): return dateFormatter.format(now()) } -fun validateDateFormat(dateFormat: String): String? { - return try { - val timeZone = ZoneId.systemDefault() - val dateFormatter = DateFormatter.forPattern(dateFormat).withZone(timeZone) - val instant = dateFormatter.toDateMathParser().parse("now/s", System::currentTimeMillis, false, timeZone) - dateFormatter.format(instant) - null - } catch (e: Exception) { - e.message ?: "Invalid date format." - } +fun validateDateFormat(dateFormat: String): String? = try { + val timeZone = ZoneId.systemDefault() + val dateFormatter = DateFormatter.forPattern(dateFormat).withZone(timeZone) + val instant = dateFormatter.toDateMathParser().parse("now/s", System::currentTimeMillis, false, timeZone) + dateFormatter.format(instant) + null +} catch (e: Exception) { + e.message ?: "Invalid date format." } fun preFixTimeStamp(msg: String?): String { @@ -203,9 +201,7 @@ fun addSMPolicyInSnapshotMetadata(snapshotConfig: Map, policyName: return snapshotConfigWithSMPolicyMetadata } -fun List.filterBySMPolicyInSnapshotMetadata(policyName: String): List { - return filter { it.userMetadata()?.get(SM_TYPE) == policyName } -} +fun List.filterBySMPolicyInSnapshotMetadata(policyName: String): List = filter { it.userMetadata()?.get(SM_TYPE) == policyName } /** * Get snapshots diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestCreateSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestCreateSMPolicyHandler.kt index 1c4f450fc..2ac247af7 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestCreateSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestCreateSMPolicyHandler.kt @@ -12,15 +12,11 @@ import org.opensearch.rest.RestRequest class RestCreateSMPolicyHandler : RestBaseIndexSMPolicyHandler() { - override fun getName(): String { - return "snapshot_management_create_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_create_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(RestRequest.Method.POST, "$SM_POLICIES_URI/{policyName}"), - ) - } + override fun routes(): List = listOf( + Route(RestRequest.Method.POST, "$SM_POLICIES_URI/{policyName}"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer = prepareIndexRequest(request, client, true) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestDeleteSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestDeleteSMPolicyHandler.kt index f894b1ac6..905597f20 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestDeleteSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestDeleteSMPolicyHandler.kt @@ -19,15 +19,11 @@ import org.opensearch.rest.action.RestToXContentListener class RestDeleteSMPolicyHandler : BaseRestHandler() { - override fun getName(): String { - return "snapshot_management_delete_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_delete_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(RestRequest.Method.DELETE, "$SM_POLICIES_URI/{policyName}"), - ) - } + override fun routes(): List = listOf( + Route(RestRequest.Method.DELETE, "$SM_POLICIES_URI/{policyName}"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val policyName = request.param("policyName", "") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestExplainSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestExplainSMPolicyHandler.kt index 79f45b126..bdd20d649 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestExplainSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestExplainSMPolicyHandler.kt @@ -21,15 +21,11 @@ class RestExplainSMPolicyHandler : BaseRestHandler() { private val log = LogManager.getLogger(RestExplainSMPolicyHandler::class.java) - override fun getName(): String { - return "snapshot_management_explain_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_explain_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(GET, "$SM_POLICIES_URI/{policyName}/_explain"), - ) - } + override fun routes(): List = listOf( + Route(GET, "$SM_POLICIES_URI/{policyName}/_explain"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { var policyNames: Array = Strings.splitStringByCommaToArray(request.param("policyName", "")) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestGetSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestGetSMPolicyHandler.kt index b646c87d2..091e3f5de 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestGetSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestGetSMPolicyHandler.kt @@ -22,16 +22,12 @@ import org.opensearch.rest.action.RestToXContentListener class RestGetSMPolicyHandler : BaseRestHandler() { - override fun getName(): String { - return "snapshot_management_get_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_get_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(GET, "$SM_POLICIES_URI/{policyName}"), - Route(GET, "$SM_POLICIES_URI/"), - ) - } + override fun routes(): List = listOf( + Route(GET, "$SM_POLICIES_URI/{policyName}"), + Route(GET, "$SM_POLICIES_URI/"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val policyName = request.param("policyName", "") @@ -42,10 +38,8 @@ class RestGetSMPolicyHandler : BaseRestHandler() { } } - private fun getSMPolicyByName(client: NodeClient, policyName: String): RestChannelConsumer { - return RestChannelConsumer { - client.execute(GET_SM_POLICY_ACTION_TYPE, GetSMPolicyRequest(smPolicyNameToDocId(policyName)), RestToXContentListener(it)) - } + private fun getSMPolicyByName(client: NodeClient, policyName: String): RestChannelConsumer = RestChannelConsumer { + client.execute(GET_SM_POLICY_ACTION_TYPE, GetSMPolicyRequest(smPolicyNameToDocId(policyName)), RestToXContentListener(it)) } private fun getAllPolicies(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStartSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStartSMPolicyHandler.kt index 7841b44a2..38a409754 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStartSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStartSMPolicyHandler.kt @@ -21,15 +21,11 @@ class RestStartSMPolicyHandler : BaseRestHandler() { private val log = LogManager.getLogger(RestStartSMPolicyHandler::class.java) - override fun getName(): String { - return "snapshot_management_start_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_start_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(RestRequest.Method.POST, "$SM_POLICIES_URI/{policyName}/_start"), - ) - } + override fun routes(): List = listOf( + Route(RestRequest.Method.POST, "$SM_POLICIES_URI/{policyName}/_start"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val policyName = request.getValidSMPolicyName() diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStopSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStopSMPolicyHandler.kt index bd87c5cdf..30c8944ba 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStopSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestStopSMPolicyHandler.kt @@ -21,15 +21,11 @@ class RestStopSMPolicyHandler : BaseRestHandler() { private val log = LogManager.getLogger(RestStopSMPolicyHandler::class.java) - override fun getName(): String { - return "snapshot_management_stop_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_stop_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(RestRequest.Method.POST, "$SM_POLICIES_URI/{policyName}/_stop"), - ) - } + override fun routes(): List = listOf( + Route(RestRequest.Method.POST, "$SM_POLICIES_URI/{policyName}/_stop"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val policyName = request.getValidSMPolicyName() diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestUpdateSMPolicyHandler.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestUpdateSMPolicyHandler.kt index 15aa9a60f..dfc14b76c 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestUpdateSMPolicyHandler.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/resthandler/RestUpdateSMPolicyHandler.kt @@ -12,15 +12,11 @@ import org.opensearch.rest.RestRequest class RestUpdateSMPolicyHandler : RestBaseIndexSMPolicyHandler() { - override fun getName(): String { - return "snapshot_management_update_policy_rest_handler" - } + override fun getName(): String = "snapshot_management_update_policy_rest_handler" - override fun routes(): List { - return listOf( - Route(RestRequest.Method.PUT, "$SM_POLICIES_URI/{policyName}"), - ) - } + override fun routes(): List = listOf( + Route(RestRequest.Method.PUT, "$SM_POLICIES_URI/{policyName}"), + ) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer = prepareIndexRequest(request, client, false) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/delete/DeleteSMPolicyRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/delete/DeleteSMPolicyRequest.kt index d8a95fd3f..fb510f3f4 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/delete/DeleteSMPolicyRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/delete/DeleteSMPolicyRequest.kt @@ -11,9 +11,7 @@ import org.opensearch.core.common.io.stream.StreamInput import org.opensearch.core.common.io.stream.StreamOutput class DeleteSMPolicyRequest : DeleteRequest { - override fun validate(): ActionRequestValidationException? { - return null - } + override fun validate(): ActionRequestValidationException? = null constructor(sin: StreamInput) : super(sin) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyRequest.kt index 0b757a31c..f0c82a412 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyRequest.kt @@ -13,9 +13,7 @@ import org.opensearch.core.common.io.stream.StreamOutput class ExplainSMPolicyRequest( val policyNames: Array, ) : ActionRequest() { - override fun validate(): ActionRequestValidationException? { - return null - } + override fun validate(): ActionRequestValidationException? = null constructor(sin: StreamInput) : this(policyNames = sin.readStringArray()) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyResponse.kt index 673266efc..956a8bd34 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/explain/ExplainSMPolicyResponse.kt @@ -16,16 +16,16 @@ import org.opensearch.indexmanagement.snapshotmanagement.model.ExplainSMPolicy import org.opensearch.indexmanagement.snapshotmanagement.model.SMPolicy import java.io.IOException -class ExplainSMPolicyResponse : ActionResponse, ToXContentObject { +class ExplainSMPolicyResponse : + ActionResponse, + ToXContentObject { val policiesToExplain: Map constructor(policiesToExplain: Map) : super() { this.policiesToExplain = policiesToExplain } - internal fun getIdsToExplain(): Map { - return this.policiesToExplain - } + internal fun getIdsToExplain(): Map = this.policiesToExplain @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -50,20 +50,18 @@ class ExplainSMPolicyResponse : ActionResponse, ToXContentObject { } @Throws(IOException::class) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .startArray(SM_POLICIES_FIELD) - .also { - policiesToExplain.entries.forEach { (name, explain) -> - it.startObject().apply { - this.field(SMPolicy.NAME_FIELD, name) - explain?.toXContent(this, params) - }.endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .startArray(SM_POLICIES_FIELD) + .also { + policiesToExplain.entries.forEach { (name, explain) -> + it.startObject().apply { + this.field(SMPolicy.NAME_FIELD, name) + explain?.toXContent(this, params) + }.endObject() } - .endArray() - .endObject() - } + } + .endArray() + .endObject() companion object { const val SM_POLICIES_FIELD = "policies" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesRequest.kt index c86fcd49c..26e9f59de 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesRequest.kt @@ -23,7 +23,5 @@ class GetSMPoliciesRequest(val searchParams: SearchParams) : ActionRequest() { searchParams.writeTo(out) } - override fun validate(): ActionRequestValidationException? { - return null - } + override fun validate(): ActionRequestValidationException? = null } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesResponse.kt index 5c4eaeed4..62e9e7c51 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPoliciesResponse.kt @@ -21,7 +21,8 @@ import org.opensearch.indexmanagement.util._SEQ_NO class GetSMPoliciesResponse( val policies: List, val totalPolicies: Long, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { constructor(sin: StreamInput) : this( policies = sin.readList(::SMPolicy), @@ -33,21 +34,19 @@ class GetSMPoliciesResponse( out.writeLong(totalPolicies) } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .startArray("policies") - .apply { - for (policy in policies) { - this.startObject() - .field(_ID, policy.id) - .field(_SEQ_NO, policy.seqNo) - .field(_PRIMARY_TERM, policy.primaryTerm) - .field(SMPolicy.SM_TYPE, policy, XCONTENT_WITHOUT_TYPE_AND_USER) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .startArray("policies") + .apply { + for (policy in policies) { + this.startObject() + .field(_ID, policy.id) + .field(_SEQ_NO, policy.seqNo) + .field(_PRIMARY_TERM, policy.primaryTerm) + .field(SMPolicy.SM_TYPE, policy, XCONTENT_WITHOUT_TYPE_AND_USER) + .endObject() } - .endArray() - .field("total_policies", totalPolicies) - .endObject() - } + } + .endArray() + .field("total_policies", totalPolicies) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyRequest.kt index ee3c2e396..6b33a97ae 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyRequest.kt @@ -13,9 +13,7 @@ import org.opensearch.core.common.io.stream.StreamOutput class GetSMPolicyRequest( val policyID: String, ) : ActionRequest() { - override fun validate(): ActionRequestValidationException? { - return null - } + override fun validate(): ActionRequestValidationException? = null constructor(sin: StreamInput) : this( policyID = sin.readString(), diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyResponse.kt index b01d09919..d5471f0b0 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/GetSMPolicyResponse.kt @@ -25,7 +25,8 @@ class GetSMPolicyResponse( val seqNo: Long, val primaryTerm: Long, val policy: SMPolicy, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { constructor(sin: StreamInput) : this( id = sin.readString(), diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/TransportGetSMPoliciesAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/TransportGetSMPoliciesAction.kt index ad3491647..2497503d5 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/TransportGetSMPoliciesAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/get/TransportGetSMPoliciesAction.kt @@ -107,15 +107,13 @@ class TransportGetSMPoliciesAction @Inject constructor( return SearchRequest(IndexManagementPlugin.INDEX_MANAGEMENT_INDEX).source(searchSourceBuilder) } - private fun parseGetAllPoliciesResponse(searchResponse: SearchResponse): Pair, Long> { - return try { - val totalPolicies = searchResponse.hits.totalHits?.value ?: 0L - searchResponse.hits.hits.map { - contentParser(it.sourceRef).parseWithType(it.id, it.seqNo, it.primaryTerm, SMPolicy.Companion::parse) - } to totalPolicies - } catch (e: Exception) { - log.error("Failed to parse snapshot management policy in search response", e) - throw OpenSearchStatusException("Failed to parse snapshot management policy", RestStatus.NOT_FOUND) - } + private fun parseGetAllPoliciesResponse(searchResponse: SearchResponse): Pair, Long> = try { + val totalPolicies = searchResponse.hits.totalHits?.value ?: 0L + searchResponse.hits.hits.map { + contentParser(it.sourceRef).parseWithType(it.id, it.seqNo, it.primaryTerm, SMPolicy.Companion::parse) + } to totalPolicies + } catch (e: Exception) { + log.error("Failed to parse snapshot management policy in search response", e) + throw OpenSearchStatusException("Failed to parse snapshot management policy", RestStatus.NOT_FOUND) } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/index/IndexSMPolicyResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/index/IndexSMPolicyResponse.kt index ae7861fd6..3c34619d9 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/index/IndexSMPolicyResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/api/transport/index/IndexSMPolicyResponse.kt @@ -27,7 +27,8 @@ class IndexSMPolicyResponse( val primaryTerm: Long, val policy: SMPolicy, val status: RestStatus, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { constructor(sin: StreamInput) : this( id = sin.readString(), @@ -47,13 +48,11 @@ class IndexSMPolicyResponse( out.writeEnum(status) } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(_ID, id) - .field(_VERSION, version) - .field(_SEQ_NO, seqNo) - .field(_PRIMARY_TERM, primaryTerm) - .field(SM_TYPE, policy, XCONTENT_WITHOUT_TYPE_AND_USER) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(_ID, id) + .field(_VERSION, version) + .field(_SEQ_NO, seqNo) + .field(_PRIMARY_TERM, primaryTerm) + .field(SM_TYPE, policy, XCONTENT_WITHOUT_TYPE_AND_USER) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/ExplainSMPolicy.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/ExplainSMPolicy.kt index 58ab17138..e8642c0d1 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/ExplainSMPolicy.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/ExplainSMPolicy.kt @@ -17,7 +17,8 @@ import java.io.IOException data class ExplainSMPolicy( val metadata: SMMetadata? = null, val enabled: Boolean? = null, -) : ToXContentFragment, Writeable { +) : ToXContentFragment, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/NotificationConfig.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/NotificationConfig.kt index aa962fe32..55df25e6d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/NotificationConfig.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/NotificationConfig.kt @@ -28,14 +28,13 @@ import java.io.IOException data class NotificationConfig( val channel: Channel, val conditions: Conditions, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(CHANNEL_FIELD, channel) - .field(CONDITIONS_FIELD, conditions) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(CHANNEL_FIELD, channel) + .field(CONDITIONS_FIELD, conditions) + .endObject() @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -140,16 +139,15 @@ data class NotificationConfig( val deletion: Boolean = false, val failure: Boolean = false, val timeLimitExceeded: Boolean = false, - ) : Writeable, ToXContent { - - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(CREATION_FIELD, creation) - .field(DELETION_FIELD, deletion) - .field(FAILURE_FIELD, failure) - .field(TIME_LIMIT_EXCEEDED_FIELD, timeLimitExceeded) - .endObject() - } + ) : Writeable, + ToXContent { + + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(CREATION_FIELD, creation) + .field(DELETION_FIELD, deletion) + .field(FAILURE_FIELD, failure) + .field(TIME_LIMIT_EXCEEDED_FIELD, timeLimitExceeded) + .endObject() companion object { const val CREATION_FIELD = "creation" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMMetadata.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMMetadata.kt index 6f9d11265..1cbda79c8 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMMetadata.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMMetadata.kt @@ -43,7 +43,8 @@ data class SMMetadata( val id: String = NO_ID, val seqNo: Long = SequenceNumbers.UNASSIGNED_SEQ_NO, val primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, -) : Writeable, ToXContentObject { +) : Writeable, + ToXContentObject { override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { builder.startObject() @@ -106,9 +107,7 @@ data class SMMetadata( return info } - fun InfoType?.remove(key: String): InfoType? { - return this?.toMutableMap().remove(key) - } + fun InfoType?.remove(key: String): InfoType? = this?.toMutableMap().remove(key) } constructor(sin: StreamInput) : this( @@ -137,17 +136,16 @@ data class SMMetadata( val started: List? = null, val latestExecution: LatestExecution? = null, val retry: Retry? = null, - ) : Writeable, ToXContentObject { - - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(CURRENT_STATE_FIELD, currentState.toString()) - .field(TRIGGER_FIELD, trigger) - .optionalField(STARTED_FIELD, started) - .optionalField(LAST_EXECUTION_FIELD, latestExecution) - .optionalField(RETRY_FIELD, retry) - .endObject() - } + ) : Writeable, + ToXContentObject { + + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(CURRENT_STATE_FIELD, currentState.toString()) + .field(TRIGGER_FIELD, trigger) + .optionalField(STARTED_FIELD, started) + .optionalField(LAST_EXECUTION_FIELD, latestExecution) + .optionalField(RETRY_FIELD, retry) + .endObject() companion object { const val CURRENT_STATE_FIELD = "current_state" @@ -208,16 +206,15 @@ data class SMMetadata( val startTime: Instant, val endTime: Instant? = null, val info: Info? = null, - ) : Writeable, ToXContentObject { - - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(STATUS_FIELD, status.toString()) - .optionalTimeField(START_TIME_FIELD, startTime) - .optionalTimeField(END_TIME_FIELD, endTime) - .optionalInfoField(INFO_FIELD, info) - .endObject() - } + ) : Writeable, + ToXContentObject { + + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(STATUS_FIELD, status.toString()) + .optionalTimeField(START_TIME_FIELD, startTime) + .optionalTimeField(END_TIME_FIELD, endTime) + .optionalInfoField(INFO_FIELD, info) + .endObject() companion object { const val STATUS_FIELD = "status" @@ -252,13 +249,11 @@ data class SMMetadata( ) } - fun init(status: Status, info: Info? = null): LatestExecution { - return LatestExecution( - status = status, - startTime = now(), - info = info, - ) - } + fun init(status: Status, info: Info? = null): LatestExecution = LatestExecution( + status = status, + startTime = now(), + info = info, + ) } constructor(sin: StreamInput) : this( @@ -287,14 +282,13 @@ data class SMMetadata( data class Info( val message: String? = null, val cause: String? = null, - ) : Writeable, ToXContentObject { + ) : Writeable, + ToXContentObject { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .optionalField(MESSAGE_FIELD, message) - .optionalField(CAUSE_FIELD, cause) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .optionalField(MESSAGE_FIELD, message) + .optionalField(CAUSE_FIELD, cause) + .endObject() companion object { const val MESSAGE_FIELD = "message" @@ -341,13 +335,12 @@ data class SMMetadata( */ data class Trigger( val time: Instant, - ) : Writeable, ToXContentObject { + ) : Writeable, + ToXContentObject { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .optionalTimeField(TIME_FIELD, time) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .optionalTimeField(TIME_FIELD, time) + .endObject() companion object { const val TIME_FIELD = "time" @@ -382,13 +375,12 @@ data class SMMetadata( data class Retry( val count: Int, - ) : Writeable, ToXContentObject { + ) : Writeable, + ToXContentObject { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(COUNT_FIELD, count) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(COUNT_FIELD, count) + .endObject() companion object { const val RETRY_FIELD = "retry" @@ -560,29 +552,23 @@ data class SMMetadata( return this } - fun getWorkflowMetadata(): WorkflowMetadata? { - return when (workflowType) { - WorkflowType.CREATION -> { - metadata.creation - } - WorkflowType.DELETION -> { - metadata.deletion - } + fun getWorkflowMetadata(): WorkflowMetadata? = when (workflowType) { + WorkflowType.CREATION -> { + metadata.creation + } + WorkflowType.DELETION -> { + metadata.deletion } } - fun getWorkflowType(): WorkflowType { - return workflowType - } + fun getWorkflowType(): WorkflowType = workflowType - fun getStartedSnapshots(): List? { - return when (workflowType) { - WorkflowType.CREATION -> { - metadata.creation.started - } - WorkflowType.DELETION -> { - metadata.deletion?.started - } + fun getStartedSnapshots(): List? = when (workflowType) { + WorkflowType.CREATION -> { + metadata.creation.started + } + WorkflowType.DELETION -> { + metadata.deletion?.started } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMPolicy.kt b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMPolicy.kt index 2d240c594..6504799a7 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMPolicy.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMPolicy.kt @@ -52,7 +52,8 @@ data class SMPolicy( val primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, val notificationConfig: NotificationConfig? = null, val user: User? = null, -) : ScheduledJobParameter, Writeable { +) : ScheduledJobParameter, + Writeable { init { require(snapshotConfig["repository"] != null && snapshotConfig["repository"] != "") { @@ -252,14 +253,13 @@ data class SMPolicy( data class Creation( val schedule: Schedule, val timeLimit: TimeValue? = null, - ) : Writeable, ToXContent { + ) : Writeable, + ToXContent { - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(SCHEDULE_FIELD, schedule) - .optionalField(TIME_LIMIT_FIELD, timeLimit) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(SCHEDULE_FIELD, schedule) + .optionalField(TIME_LIMIT_FIELD, timeLimit) + .endObject() companion object { const val SCHEDULE_FIELD = "schedule" @@ -302,15 +302,14 @@ data class SMPolicy( val scheduleProvided: Boolean = true, val condition: DeleteCondition, val timeLimit: TimeValue? = null, - ) : Writeable, ToXContent { - - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(SCHEDULE_FIELD, schedule) - .field(CONDITION_FIELD, condition) - .optionalField(TIME_LIMIT_FIELD, timeLimit) - .endObject() - } + ) : Writeable, + ToXContent { + + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(SCHEDULE_FIELD, schedule) + .field(CONDITION_FIELD, condition) + .optionalField(TIME_LIMIT_FIELD, timeLimit) + .endObject() companion object { const val SCHEDULE_FIELD = "schedule" @@ -366,7 +365,8 @@ data class SMPolicy( val maxAge: TimeValue? = null, val minCount: Int, val maxCount: Int? = null, - ) : Writeable, ToXContent { + ) : Writeable, + ToXContent { init { require(!(maxAge == null && maxCount == null)) { "Please provide $MAX_AGE_FIELD or $MAX_COUNT_FIELD." } @@ -374,13 +374,11 @@ data class SMPolicy( require(maxCount == null || maxCount - minCount > 0) { "$MAX_COUNT_FIELD should be bigger than $MIN_COUNT_FIELD." } } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .optionalField(MAX_AGE_FIELD, maxAge) - .field(MIN_COUNT_FIELD, minCount) - .optionalField(MAX_COUNT_FIELD, maxCount) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .optionalField(MAX_AGE_FIELD, maxAge) + .field(MIN_COUNT_FIELD, minCount) + .optionalField(MAX_COUNT_FIELD, maxCount) + .endObject() companion object { const val MAX_COUNT_FIELD = "max_count" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/TargetIndexMappingService.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/TargetIndexMappingService.kt index bd55f0198..cda1b81fc 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/TargetIndexMappingService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/TargetIndexMappingService.kt @@ -193,24 +193,22 @@ object TargetIndexMappingService { @Suppress("UNCHECKED_CAST") private fun mapCompositeAggregationToString( compositeAggregation: Map, - ): String { - return buildString { - var isFirst = true - val iterator = compositeAggregation.entries.iterator() - while (iterator.hasNext()) { - val it = iterator.next() - if (!isFirst) { - append(",") - } - isFirst = false - if (it.value is Map<*, *>) { - append("\"${it.key}\" : {") - append(mapCompositeAggregationToString(it.value as Map)) - append("\n }") - } else { - append("\n") - append("\"${it.key}\" : \"${it.value}\"") - } + ): String = buildString { + var isFirst = true + val iterator = compositeAggregation.entries.iterator() + while (iterator.hasNext()) { + val it = iterator.next() + if (!isFirst) { + append(",") + } + isFirst = false + if (it.value is Map<*, *>) { + append("\"${it.key}\" : {") + append(mapCompositeAggregationToString(it.value as Map)) + append("\n }") + } else { + append("\n") + append("\"${it.key}\" : \"${it.value}\"") } } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformMetadataService.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformMetadataService.kt index afe2b8850..15980d95a 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformMetadataService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformMetadataService.kt @@ -40,25 +40,23 @@ class TransformMetadataService(private val client: Client, val xContentRegistry: private val logger = LogManager.getLogger(javaClass) @Suppress("BlockingMethodInNonBlockingContext") - suspend fun getMetadata(transform: Transform): TransformMetadata { - return if (transform.metadataId != null) { - // update metadata - val getRequest = GetRequest(IndexManagementPlugin.INDEX_MANAGEMENT_INDEX, transform.metadataId).routing(transform.id) - val response: GetResponse = client.suspendUntil { get(getRequest, it) } - val metadataSource = response.sourceAsBytesRef - val transformMetadata = metadataSource?.let { - withContext(Dispatchers.IO) { - val xcp = XContentHelper.createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, metadataSource, XContentType.JSON) - xcp.parseWithType(response.id, response.seqNo, response.primaryTerm, TransformMetadata.Companion::parse) - } + suspend fun getMetadata(transform: Transform): TransformMetadata = if (transform.metadataId != null) { + // update metadata + val getRequest = GetRequest(IndexManagementPlugin.INDEX_MANAGEMENT_INDEX, transform.metadataId).routing(transform.id) + val response: GetResponse = client.suspendUntil { get(getRequest, it) } + val metadataSource = response.sourceAsBytesRef + val transformMetadata = metadataSource?.let { + withContext(Dispatchers.IO) { + val xcp = XContentHelper.createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, metadataSource, XContentType.JSON) + xcp.parseWithType(response.id, response.seqNo, response.primaryTerm, TransformMetadata.Companion::parse) } - // TODO: Should we attempt to create a new document instead if failed to parse, the only reason this can happen is if someone deleted - // the metadata doc? - transformMetadata ?: throw TransformMetadataException("Failed to parse the existing metadata document") - } else { - logger.debug("Creating metadata doc as none exists at the moment for transform job [${transform.id}]") - createMetadata(transform) } + // TODO: Should we attempt to create a new document instead if failed to parse, the only reason this can happen is if someone deleted + // the metadata doc? + transformMetadata ?: throw TransformMetadataException("Failed to parse the existing metadata document") + } else { + logger.debug("Creating metadata doc as none exists at the moment for transform job [${transform.id}]") + createMetadata(transform) } private suspend fun createMetadata(transform: Transform): TransformMetadata { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformProcessedBucketLog.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformProcessedBucketLog.kt index 20bdf061e..5e56c8370 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformProcessedBucketLog.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformProcessedBucketLog.kt @@ -28,9 +28,7 @@ class TransformProcessedBucketLog { processedBuckets.add(computeBucketHash(bucket)) } - private fun isProcessed(bucket: Map): Boolean { - return processedBuckets.contains(computeBucketHash(bucket)) - } + private fun isProcessed(bucket: Map): Boolean = processedBuckets.contains(computeBucketHash(bucket)) fun isNotProcessed(bucket: Map) = !isProcessed(bucket) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformRunner.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformRunner.kt index 55d35fd24..08c432987 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformRunner.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformRunner.kt @@ -325,9 +325,8 @@ object TransformRunner : return updatedMetadata } - private suspend fun withTransformSecurityContext(transform: Transform, block: suspend CoroutineScope.() -> T): T { - return withClosableContext(IndexManagementSecurityContext(transform.id, settings, threadPool.threadContext, transform.user), block) - } + private suspend fun withTransformSecurityContext(transform: Transform, block: suspend CoroutineScope.() -> T): T = + withClosableContext(IndexManagementSecurityContext(transform.id, settings, threadPool.threadContext, transform.user), block) private suspend fun updateTransform(transform: Transform): Transform { val request = IndexTransformRequest( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformSearchService.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformSearchService.kt index 6e58d89af..c5c7ffeab 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformSearchService.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/TransformSearchService.kt @@ -83,8 +83,7 @@ class TransformSearchService( @Volatile private var cancelAfterTimeInterval = SEARCH_CANCEL_AFTER_TIME_INTERVAL_SETTING.get(settings) init { - clusterService.clusterSettings.addSettingsUpdateConsumer(TRANSFORM_JOB_SEARCH_BACKOFF_MILLIS, TRANSFORM_JOB_SEARCH_BACKOFF_COUNT) { - millis, count -> + clusterService.clusterSettings.addSettingsUpdateConsumer(TRANSFORM_JOB_SEARCH_BACKOFF_MILLIS, TRANSFORM_JOB_SEARCH_BACKOFF_COUNT) { millis, count -> backoffPolicy = BackoffPolicy.constantBackoff(millis, count) } @@ -173,9 +172,7 @@ class TransformSearchService( * Apache Lucene has maxClauses limit which we could trip during recomputing of modified buckets(continuous transform) * due to trying to match too many bucket fields. To avoid this, we control how many buckets we recompute at a time(pageSize) */ - private fun calculateMaxPageSize(transform: Transform): Int { - return minOf(transform.pageSize, LUCENE_MAX_CLAUSES / (transform.groups.size + 1)) - } + private fun calculateMaxPageSize(transform: Transform): Int = minOf(transform.pageSize, LUCENE_MAX_CLAUSES / (transform.groups.size + 1)) @Suppress("RethrowCaughtException") suspend fun executeCompositeSearch( @@ -403,35 +400,33 @@ class TransformSearchService( return BucketSearchResult(modifiedBuckets, aggs.afterKey(), searchResponse.took.millis) } - private fun getAggregationValue(aggregation: Aggregation, targetIndexDateFieldMappings: Map): Any { - return when (aggregation) { - is InternalSum, is InternalMin, is InternalMax, is InternalAvg, is InternalValueCount -> { - val agg = aggregation as NumericMetricsAggregation.SingleValue - /** - * When date filed is used in transform aggregation (min, max avg), the value of the field is in exponential format - * which is not allowed since the target index mapping for date field is strict_date_optional_time||epoch_millis - * That's why the exponential value is transformed to long: agg.value().toLong() - */ - if (aggregation is InternalValueCount || aggregation is InternalSum || !targetIndexDateFieldMappings.containsKey(agg.name)) { - agg.value() - } else { - agg.value().toLong() - } - } - is Percentiles -> { - val percentiles = mutableMapOf() - aggregation.forEach { percentile -> - percentiles[percentile.percent.toString()] = percentile.value - } - percentiles + private fun getAggregationValue(aggregation: Aggregation, targetIndexDateFieldMappings: Map): Any = when (aggregation) { + is InternalSum, is InternalMin, is InternalMax, is InternalAvg, is InternalValueCount -> { + val agg = aggregation as NumericMetricsAggregation.SingleValue + /** + * When date filed is used in transform aggregation (min, max avg), the value of the field is in exponential format + * which is not allowed since the target index mapping for date field is strict_date_optional_time||epoch_millis + * That's why the exponential value is transformed to long: agg.value().toLong() + */ + if (aggregation is InternalValueCount || aggregation is InternalSum || !targetIndexDateFieldMappings.containsKey(agg.name)) { + agg.value() + } else { + agg.value().toLong() } - is ScriptedMetric -> { - aggregation.aggregation() + } + is Percentiles -> { + val percentiles = mutableMapOf() + aggregation.forEach { percentile -> + percentiles[percentile.percent.toString()] = percentile.value } - else -> throw TransformSearchServiceException( - "Found aggregation [${aggregation.name}] of type [${aggregation.type}] in composite result that is not currently supported", - ) + percentiles } + is ScriptedMetric -> { + aggregation.aggregation() + } + else -> throw TransformSearchServiceException( + "Found aggregation [${aggregation.name}] of type [${aggregation.type}] in composite result that is not currently supported", + ) } fun convertIndicesStatsResponse(response: IndicesStatsResponse): Map { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/ExplainTransformResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/ExplainTransformResponse.kt index e23f4e247..154707a5d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/ExplainTransformResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/ExplainTransformResponse.kt @@ -17,11 +17,10 @@ import java.io.IOException class ExplainTransformResponse( val idsToExplain: Map, private val failedToExplain: Map, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { - internal fun getIdsToExplain(): Map { - return this.idsToExplain - } + internal fun getIdsToExplain(): Map = this.idsToExplain @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/TransportExplainTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/TransportExplainTransformAction.kt index 2519f828c..c5876c8c9 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/TransportExplainTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/explain/TransportExplainTransformAction.kt @@ -186,10 +186,8 @@ class TransportExplainTransformAction @Inject constructor( } } - private fun contentParser(bytesReference: BytesReference): XContentParser { - return XContentHelper.createParser( - xContentRegistry, - LoggingDeprecationHandler.INSTANCE, bytesReference, XContentType.JSON, - ) - } + private fun contentParser(bytesReference: BytesReference): XContentParser = XContentHelper.createParser( + xContentRegistry, + LoggingDeprecationHandler.INSTANCE, bytesReference, XContentType.JSON, + ) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformResponse.kt index bbd79a58b..b9b4dfba3 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformResponse.kt @@ -28,7 +28,8 @@ class GetTransformResponse( val primaryTerm: Long, val status: RestStatus, val transform: Transform?, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformsResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformsResponse.kt index 74648afa5..61270231b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformsResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/GetTransformsResponse.kt @@ -24,7 +24,8 @@ class GetTransformsResponse( val transforms: List, val totalTransforms: Int, val status: RestStatus, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -39,21 +40,19 @@ class GetTransformsResponse( out.writeEnum(status) } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field("total_transforms", totalTransforms) - .startArray("transforms") - .apply { - for (transform in transforms) { - this.startObject() - .field(_ID, transform.id) - .field(_SEQ_NO, transform.seqNo) - .field(_PRIMARY_TERM, transform.primaryTerm) - .field(TRANSFORM_TYPE, transform, XCONTENT_WITHOUT_TYPE_AND_USER) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field("total_transforms", totalTransforms) + .startArray("transforms") + .apply { + for (transform in transforms) { + this.startObject() + .field(_ID, transform.id) + .field(_SEQ_NO, transform.seqNo) + .field(_PRIMARY_TERM, transform.primaryTerm) + .field(TRANSFORM_TYPE, transform, XCONTENT_WITHOUT_TYPE_AND_USER) + .endObject() } - .endArray() - .endObject() - } + } + .endArray() + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformAction.kt index 5f4ea101f..4dac22989 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformAction.kt @@ -36,7 +36,7 @@ class TransportGetTransformAction @Inject constructor( val clusterService: ClusterService, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry, -) : HandledTransportAction ( +) : HandledTransportAction( GetTransformAction.NAME, transportService, actionFilters, ::GetTransformRequest, ) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformsAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformsAction.kt index 9a0b725ac..7bcbb0c7d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformsAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/get/TransportGetTransformsAction.kt @@ -41,7 +41,7 @@ class TransportGetTransformsAction @Inject constructor( val clusterService: ClusterService, actionFilters: ActionFilters, val xContentRegistry: NamedXContentRegistry, -) : HandledTransportAction ( +) : HandledTransportAction( GetTransformsAction.NAME, transportService, actionFilters, ::GetTransformsRequest, ) { @@ -87,10 +87,8 @@ class TransportGetTransformsAction @Inject constructor( } } - private fun contentParser(bytesReference: BytesReference): XContentParser { - return XContentHelper.createParser( - xContentRegistry, - LoggingDeprecationHandler.INSTANCE, bytesReference, XContentType.JSON, - ) - } + private fun contentParser(bytesReference: BytesReference): XContentParser = XContentHelper.createParser( + xContentRegistry, + LoggingDeprecationHandler.INSTANCE, bytesReference, XContentType.JSON, + ) } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/index/IndexTransformResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/index/IndexTransformResponse.kt index 41828c62a..d52dbab8d 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/index/IndexTransformResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/index/IndexTransformResponse.kt @@ -28,7 +28,8 @@ class IndexTransformResponse( val primaryTerm: Long, val status: RestStatus, val transform: Transform, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -51,13 +52,11 @@ class IndexTransformResponse( } @Throws(IOException::class) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(_ID, id) - .field(_VERSION, version) - .field(_SEQ_NO, seqNo) - .field(_PRIMARY_TERM, primaryTerm) - .field(TRANSFORM_TYPE, transform, XCONTENT_WITHOUT_TYPE_AND_USER) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(_ID, id) + .field(_VERSION, version) + .field(_SEQ_NO, seqNo) + .field(_PRIMARY_TERM, primaryTerm) + .field(TRANSFORM_TYPE, transform, XCONTENT_WITHOUT_TYPE_AND_USER) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformRequest.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformRequest.kt index f592ddf22..6d9c08940 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformRequest.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformRequest.kt @@ -20,9 +20,7 @@ class PreviewTransformRequest( transform = Transform(sin), ) - override fun validate(): ActionRequestValidationException? { - return null - } + override fun validate(): ActionRequestValidationException? = null @Throws(IOException::class) override fun writeTo(out: StreamOutput) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformResponse.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformResponse.kt index f3b11a03d..7d30186ea 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformResponse.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/action/preview/PreviewTransformResponse.kt @@ -16,7 +16,8 @@ import org.opensearch.core.xcontent.XContentBuilder class PreviewTransformResponse( val documents: List>, val status: RestStatus, -) : ActionResponse(), ToXContentObject { +) : ActionResponse(), + ToXContentObject { constructor(sin: StreamInput) : this( documents = sin.let { @@ -38,9 +39,7 @@ class PreviewTransformResponse( out.writeEnum(status) } - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field("documents", documents) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field("documents", documents) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ContinuousTransformStats.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ContinuousTransformStats.kt index a68d43994..7d0e9e8de 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ContinuousTransformStats.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ContinuousTransformStats.kt @@ -20,7 +20,8 @@ import java.time.Instant data class ContinuousTransformStats( val lastTimestamp: Instant?, val documentsBehind: Map?, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ExplainTransform.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ExplainTransform.kt index f73faa597..cc748e1f5 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ExplainTransform.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ExplainTransform.kt @@ -17,7 +17,8 @@ import java.io.IOException data class ExplainTransform( val metadataID: String? = null, val metadata: TransformMetadata? = null, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -33,10 +34,8 @@ data class ExplainTransform( } @Throws(IOException::class) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(Transform.METADATA_ID_FIELD, metadataID) - .field(TransformMetadata.TRANSFORM_METADATA_TYPE, metadata, XCONTENT_WITHOUT_TYPE) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(Transform.METADATA_ID_FIELD, metadataID) + .field(TransformMetadata.TRANSFORM_METADATA_TYPE, metadata, XCONTENT_WITHOUT_TYPE) + .endObject() } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ISMTransform.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ISMTransform.kt index 6c949c547..b60293291 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ISMTransform.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/ISMTransform.kt @@ -43,7 +43,8 @@ data class ISMTransform( val dataSelectionQuery: QueryBuilder = MatchAllQueryBuilder(), val groups: List, val aggregations: AggregatorFactories.Builder = AggregatorFactories.builder(), -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { init { require(pageSize in Transform.MINIMUM_PAGE_SIZE..Transform.MAXIMUM_PAGE_SIZE) { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/Transform.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/Transform.kt index f6f862d7e..adf232764 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/Transform.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/Transform.kt @@ -71,7 +71,8 @@ data class Transform( val aggregations: AggregatorFactories.Builder = AggregatorFactories.builder(), val continuous: Boolean = false, val user: User? = null, -) : ScheduledJobParameter, Writeable { +) : ScheduledJobParameter, + Writeable { init { aggregations.aggregatorFactories.forEach { @@ -169,19 +170,17 @@ data class Transform( user?.writeTo(out) } - fun convertToDoc(docCount: Long, includeId: Boolean = true): MutableMap { - return if (includeId) { - mutableMapOf( - TRANSFORM_DOC_ID_FIELD to this.id, - DOC_COUNT to docCount, - TRANSFORM_DOC_COUNT_FIELD to docCount, - ) - } else { - mutableMapOf( - DOC_COUNT to docCount, - TRANSFORM_DOC_COUNT_FIELD to docCount, - ) - } + fun convertToDoc(docCount: Long, includeId: Boolean = true): MutableMap = if (includeId) { + mutableMapOf( + TRANSFORM_DOC_ID_FIELD to this.id, + DOC_COUNT to docCount, + TRANSFORM_DOC_COUNT_FIELD to docCount, + ) + } else { + mutableMapOf( + DOC_COUNT to docCount, + TRANSFORM_DOC_COUNT_FIELD to docCount, + ) } suspend fun getContinuousStats(client: Client, metadata: TransformMetadata): ContinuousTransformStats? { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformMetadata.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformMetadata.kt index 189c22548..a220d0457 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformMetadata.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformMetadata.kt @@ -34,7 +34,8 @@ data class TransformMetadata( val stats: TransformStats, val shardIDToGlobalCheckpoint: Map? = null, val continuousStats: ContinuousTransformStats? = null, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { enum class Status(val type: String) { INIT("init"), @@ -44,9 +45,7 @@ data class TransformMetadata( FAILED("failed"), ; - override fun toString(): String { - return type - } + override fun toString(): String = type } @Throws(IOException::class) @@ -99,17 +98,15 @@ data class TransformMetadata( continuousStats?.let { it.writeTo(out) } } - fun mergeStats(stats: TransformStats): TransformMetadata { - return this.copy( - stats = this.stats.copy( - pagesProcessed = this.stats.pagesProcessed + stats.pagesProcessed, - documentsIndexed = this.stats.documentsIndexed + stats.documentsIndexed, - documentsProcessed = this.stats.documentsProcessed + stats.documentsProcessed, - indexTimeInMillis = this.stats.indexTimeInMillis + stats.indexTimeInMillis, - searchTimeInMillis = this.stats.searchTimeInMillis + stats.searchTimeInMillis, - ), - ) - } + fun mergeStats(stats: TransformStats): TransformMetadata = this.copy( + stats = this.stats.copy( + pagesProcessed = this.stats.pagesProcessed + stats.pagesProcessed, + documentsIndexed = this.stats.documentsIndexed + stats.documentsIndexed, + documentsProcessed = this.stats.documentsProcessed + stats.documentsProcessed, + indexTimeInMillis = this.stats.indexTimeInMillis + stats.indexTimeInMillis, + searchTimeInMillis = this.stats.searchTimeInMillis + stats.searchTimeInMillis, + ), + ) companion object { const val TRANSFORM_METADATA_TYPE = "transform_metadata" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformStats.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformStats.kt index 3bf55c2d4..714cca91e 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformStats.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/model/TransformStats.kt @@ -21,7 +21,8 @@ data class TransformStats( val documentsIndexed: Long, val indexTimeInMillis: Long, val searchTimeInMillis: Long, -) : ToXContentObject, Writeable { +) : ToXContentObject, + Writeable { @Throws(IOException::class) constructor(sin: StreamInput) : this( @@ -32,15 +33,13 @@ data class TransformStats( searchTimeInMillis = sin.readLong(), ) - override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder { - return builder.startObject() - .field(PAGES_PROCESSED_FIELD, pagesProcessed) - .field(DOCUMENTS_PROCESSED_FIELD, documentsProcessed) - .field(DOCUMENTS_INDEXED_FIELD, documentsIndexed) - .field(INDEX_TIME_IN_MILLIS_FIELD, indexTimeInMillis) - .field(SEARCH_TIME_IN_MILLIS_FIELD, searchTimeInMillis) - .endObject() - } + override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder = builder.startObject() + .field(PAGES_PROCESSED_FIELD, pagesProcessed) + .field(DOCUMENTS_PROCESSED_FIELD, documentsProcessed) + .field(DOCUMENTS_INDEXED_FIELD, documentsIndexed) + .field(INDEX_TIME_IN_MILLIS_FIELD, indexTimeInMillis) + .field(SEARCH_TIME_IN_MILLIS_FIELD, searchTimeInMillis) + .endObject() override fun writeTo(out: StreamOutput) { out.writeLong(pagesProcessed) diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestDeleteTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestDeleteTransformAction.kt index c3c6ce2f7..cd2fae8fd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestDeleteTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestDeleteTransformAction.kt @@ -21,11 +21,9 @@ import java.io.IOException class RestDeleteTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - Route(DELETE, "$TRANSFORM_BASE_URI/{transformID}"), - ) - } + override fun routes(): List = listOf( + Route(DELETE, "$TRANSFORM_BASE_URI/{transformID}"), + ) override fun getName(): String = "opendistro_delete_transform_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestExplainTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestExplainTransformAction.kt index bc3653235..1039d2425 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestExplainTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestExplainTransformAction.kt @@ -19,9 +19,7 @@ import org.opensearch.rest.action.RestToXContentListener class RestExplainTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf(Route(GET, "$TRANSFORM_BASE_URI/{transformID}/_explain")) - } + override fun routes(): List = listOf(Route(GET, "$TRANSFORM_BASE_URI/{transformID}/_explain")) override fun getName(): String = "opendistro_explain_transform_action" diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestGetTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestGetTransformAction.kt index 9879a8828..4c82cac3b 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestGetTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestGetTransformAction.kt @@ -27,17 +27,13 @@ import org.opensearch.search.fetch.subphase.FetchSourceContext class RestGetTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - Route(GET, TRANSFORM_BASE_URI), - Route(GET, "$TRANSFORM_BASE_URI/{transformID}"), - Route(HEAD, "$TRANSFORM_BASE_URI/{transformID}"), - ) - } + override fun routes(): List = listOf( + Route(GET, TRANSFORM_BASE_URI), + Route(GET, "$TRANSFORM_BASE_URI/{transformID}"), + Route(HEAD, "$TRANSFORM_BASE_URI/{transformID}"), + ) - override fun getName(): String { - return "opendistro_get_transform_action" - } + override fun getName(): String = "opendistro_get_transform_action" override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val transformID = request.param("transformID") diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestIndexTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestIndexTransformAction.kt index fad8c163a..0821c9c7c 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestIndexTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestIndexTransformAction.kt @@ -34,16 +34,12 @@ import java.time.Instant class RestIndexTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - RestHandler.Route(PUT, TRANSFORM_BASE_URI), - RestHandler.Route(PUT, "$TRANSFORM_BASE_URI/{transformID}"), - ) - } + override fun routes(): List = listOf( + RestHandler.Route(PUT, TRANSFORM_BASE_URI), + RestHandler.Route(PUT, "$TRANSFORM_BASE_URI/{transformID}"), + ) - override fun getName(): String { - return "opendistro_index_transform_action" - } + override fun getName(): String = "opendistro_index_transform_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestPreviewTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestPreviewTransformAction.kt index c0d5b0142..5a1d77098 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestPreviewTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestPreviewTransformAction.kt @@ -20,16 +20,12 @@ import org.opensearch.rest.action.RestToXContentListener class RestPreviewTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - RestHandler.Route(POST, TRANSFORM_BASE_URI), - RestHandler.Route(POST, "$TRANSFORM_BASE_URI/_preview"), - ) - } + override fun routes(): List = listOf( + RestHandler.Route(POST, TRANSFORM_BASE_URI), + RestHandler.Route(POST, "$TRANSFORM_BASE_URI/_preview"), + ) - override fun getName(): String { - return "opendistro_preview_transform_action" - } + override fun getName(): String = "opendistro_preview_transform_action" override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { val xcp = request.contentParser() diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStartTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStartTransformAction.kt index d0ee8b47b..1a7d9084c 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStartTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStartTransformAction.kt @@ -20,15 +20,11 @@ import java.io.IOException class RestStartTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - Route(POST, "$TRANSFORM_BASE_URI/{transformID}/_start"), - ) - } + override fun routes(): List = listOf( + Route(POST, "$TRANSFORM_BASE_URI/{transformID}/_start"), + ) - override fun getName(): String { - return "opendistro_start_transform_action" - } + override fun getName(): String = "opendistro_start_transform_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStopTransformAction.kt b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStopTransformAction.kt index 2e6d7ffe7..c02059aee 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStopTransformAction.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/transform/resthandler/RestStopTransformAction.kt @@ -20,15 +20,11 @@ import java.io.IOException class RestStopTransformAction : BaseRestHandler() { - override fun routes(): List { - return listOf( - Route(POST, "$TRANSFORM_BASE_URI/{transformID}/_stop"), - ) - } + override fun routes(): List = listOf( + Route(POST, "$TRANSFORM_BASE_URI/{transformID}/_stop"), + ) - override fun getName(): String { - return "opendistro_stop_transform_action" - } + override fun getName(): String = "opendistro_stop_transform_action" @Throws(IOException::class) override fun prepareRequest(request: RestRequest, client: NodeClient): RestChannelConsumer { diff --git a/src/main/kotlin/org/opensearch/indexmanagement/util/IndexManagementException.kt b/src/main/kotlin/org/opensearch/indexmanagement/util/IndexManagementException.kt index 7cf0c92fc..3d7593d32 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/util/IndexManagementException.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/util/IndexManagementException.kt @@ -15,9 +15,7 @@ import java.lang.IllegalArgumentException class IndexManagementException(message: String, val status: RestStatus, ex: Exception) : OpenSearchException(message, ex) { - override fun status(): RestStatus { - return status - } + override fun status(): RestStatus = status companion object { @JvmStatic diff --git a/src/main/kotlin/org/opensearch/indexmanagement/util/IndexUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/util/IndexUtils.kt index 92ab7cfc1..2d69fc1f0 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/util/IndexUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/util/IndexUtils.kt @@ -26,7 +26,7 @@ import java.util.Base64 @Suppress("UtilityClassWithPublicConstructor", "TooManyFunctions") class IndexUtils { companion object { - @Suppress("ObjectPropertyNaming") + @Suppress("ObjectPropertyNaming", "ktlint:standard:backing-property-naming") const val _META = "_meta" const val PROPERTIES = "properties" const val FIELDS = "fields" @@ -194,13 +194,9 @@ class IndexUtils { return Base64.getUrlEncoder().withoutPadding().encodeToString(byteArray) } - fun isDataStream(name: String?, clusterState: ClusterState): Boolean { - return clusterState.metadata.dataStreams().containsKey(name) - } + fun isDataStream(name: String?, clusterState: ClusterState): Boolean = clusterState.metadata.dataStreams().containsKey(name) - fun isAlias(indexName: String?, clusterState: ClusterState): Boolean { - return clusterState.metadata.hasAlias(indexName) - } + fun isAlias(indexName: String?, clusterState: ClusterState): Boolean = clusterState.metadata.hasAlias(indexName) fun getWriteIndex(indexName: String?, clusterState: ClusterState): String? { if (isAlias(indexName, clusterState) || isDataStream(indexName, clusterState)) { @@ -230,9 +226,7 @@ class IndexUtils { return newestIndex } - fun isConcreteIndex(indexName: String?, clusterState: ClusterState): Boolean { - return clusterState.metadata - .indicesLookup[indexName]!!.type == IndexAbstraction.Type.CONCRETE_INDEX - } + fun isConcreteIndex(indexName: String?, clusterState: ClusterState): Boolean = clusterState.metadata + .indicesLookup[indexName]!!.type == IndexAbstraction.Type.CONCRETE_INDEX } } diff --git a/src/main/kotlin/org/opensearch/indexmanagement/util/RestHandlerUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/util/RestHandlerUtils.kt index fefb48c1f..910c78edd 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/util/RestHandlerUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/util/RestHandlerUtils.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -@file:Suppress("TopLevelPropertyNaming", "MatchingDeclarationName") +@file:Suppress("TopLevelPropertyNaming", "MatchingDeclarationName", "ktlint:standard:backing-property-naming") package org.opensearch.indexmanagement.util diff --git a/src/main/kotlin/org/opensearch/indexmanagement/util/ScheduledJobUtils.kt b/src/main/kotlin/org/opensearch/indexmanagement/util/ScheduledJobUtils.kt index b4250bb9c..bc7fb5a9e 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/util/ScheduledJobUtils.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/util/ScheduledJobUtils.kt @@ -72,29 +72,23 @@ private fun populateResponse( jobs: List, status: RestStatus, totalJobs: Int, -): ActionResponse { - return when (jobType) { - Rollup.ROLLUP_TYPE -> GetRollupsResponse(jobs as List, totalJobs, status) - Transform.TRANSFORM_TYPE -> GetTransformsResponse(jobs as List, totalJobs, status) - else -> { - throw OpenSearchStatusException("Unknown scheduled job type", RestStatus.INTERNAL_SERVER_ERROR) - } +): ActionResponse = when (jobType) { + Rollup.ROLLUP_TYPE -> GetRollupsResponse(jobs as List, totalJobs, status) + Transform.TRANSFORM_TYPE -> GetTransformsResponse(jobs as List, totalJobs, status) + else -> { + throw OpenSearchStatusException("Unknown scheduled job type", RestStatus.INTERNAL_SERVER_ERROR) } } -private fun getParser(jobType: String): (XContentParser, String, Long, Long) -> Any { - return when (jobType) { - Transform.TRANSFORM_TYPE -> Transform.Companion::parse - Rollup.ROLLUP_TYPE -> Rollup.Companion::parse - else -> { - throw OpenSearchStatusException("Unknown scheduled job type", RestStatus.INTERNAL_SERVER_ERROR) - } +private fun getParser(jobType: String): (XContentParser, String, Long, Long) -> Any = when (jobType) { + Transform.TRANSFORM_TYPE -> Transform.Companion::parse + Rollup.ROLLUP_TYPE -> Rollup.Companion::parse + else -> { + throw OpenSearchStatusException("Unknown scheduled job type", RestStatus.INTERNAL_SERVER_ERROR) } } -private fun contentParser(bytesReference: BytesReference): XContentParser { - return XContentHelper.createParser( - NamedXContentRegistry.EMPTY, - LoggingDeprecationHandler.INSTANCE, bytesReference, XContentType.JSON, - ) -} +private fun contentParser(bytesReference: BytesReference): XContentParser = XContentHelper.createParser( + NamedXContentRegistry.EMPTY, + LoggingDeprecationHandler.INSTANCE, bytesReference, XContentType.JSON, +) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementRestTestCase.kt index 1dca29ac9..2f8ef3e2e 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementRestTestCase.kt @@ -93,9 +93,7 @@ abstract class IndexManagementRestTestCase : ODFERestTestCase() { protected val isDebuggingRemoteCluster = System.getProperty("cluster.debug", "false")!!.toBoolean() protected val isLocalTest = clusterName() == "integTest" - private fun clusterName(): String { - return System.getProperty("tests.clustername") - } + private fun clusterName(): String = System.getProperty("tests.clustername") fun Response.asMap(): Map = entityAsMap(this) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt index e09c337af..c89a03337 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt @@ -246,32 +246,30 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { return policy } - private fun createISMRollup(targetIdxRollup: String): ISMRollup { - return ISMRollup( - description = "basic search test", - targetIndex = targetIdxRollup, - pageSize = 100, - dimensions = listOf( - DateHistogram(sourceField = "tpep_pickup_datetime", fixedInterval = "1h"), - Terms("RatecodeID", "RatecodeID"), - Terms("PULocationID", "PULocationID"), - ), - metrics = listOf( - RollupMetrics( - sourceField = "passenger_count", targetField = "passenger_count", - metrics = listOf( - Sum(), Min(), Max(), - ValueCount(), Average(), - ), - ), - RollupMetrics( - sourceField = "total_amount", - targetField = "total_amount", - metrics = listOf(Max(), Min()), + private fun createISMRollup(targetIdxRollup: String): ISMRollup = ISMRollup( + description = "basic search test", + targetIndex = targetIdxRollup, + pageSize = 100, + dimensions = listOf( + DateHistogram(sourceField = "tpep_pickup_datetime", fixedInterval = "1h"), + Terms("RatecodeID", "RatecodeID"), + Terms("PULocationID", "PULocationID"), + ), + metrics = listOf( + RollupMetrics( + sourceField = "passenger_count", targetField = "passenger_count", + metrics = listOf( + Sum(), Min(), Max(), + ValueCount(), Average(), ), ), - ) - } + RollupMetrics( + sourceField = "total_amount", + targetField = "total_amount", + metrics = listOf(Max(), Min()), + ), + ), + ) private fun assertIndexRolledUp(indexName: String, policyId: String, ismRollup: ISMRollup) { val rollup = ismRollup.toRollup(indexName) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/ODFERestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/ODFERestTestCase.kt index 0f741f4aa..f721e9f8b 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/ODFERestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/ODFERestTestCase.kt @@ -29,17 +29,15 @@ abstract class ODFERestTestCase : OpenSearchRestTestCase() { /** * Returns the REST client settings used for super-admin actions like cleaning up after the test has completed. */ - override fun restAdminSettings(): Settings { - return Settings - .builder() - .put("http.port", 9200) - .put(OPENSEARCH_SECURITY_SSL_HTTP_ENABLED, isHttps()) - .put(OPENSEARCH_SECURITY_SSL_HTTP_PEMCERT_FILEPATH, "sample.pem") - .put(OPENSEARCH_SECURITY_SSL_HTTP_KEYSTORE_FILEPATH, "test-kirk.jks") - .put(OPENSEARCH_SECURITY_SSL_HTTP_KEYSTORE_PASSWORD, "changeit") - .put(OPENSEARCH_SECURITY_SSL_HTTP_KEYSTORE_KEYPASSWORD, "changeit") - .build() - } + override fun restAdminSettings(): Settings = Settings + .builder() + .put("http.port", 9200) + .put(OPENSEARCH_SECURITY_SSL_HTTP_ENABLED, isHttps()) + .put(OPENSEARCH_SECURITY_SSL_HTTP_PEMCERT_FILEPATH, "sample.pem") + .put(OPENSEARCH_SECURITY_SSL_HTTP_KEYSTORE_FILEPATH, "test-kirk.jks") + .put(OPENSEARCH_SECURITY_SSL_HTTP_KEYSTORE_PASSWORD, "changeit") + .put(OPENSEARCH_SECURITY_SSL_HTTP_KEYSTORE_KEYPASSWORD, "changeit") + .build() @Throws(IOException::class) override fun buildClient(settings: Settings, hosts: Array): RestClient { diff --git a/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt index 502780f71..f8d8af548 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt @@ -98,13 +98,9 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { shards: String? = null, mapping: String = "", settings: Settings? = null, - ): Pair { - return super.createIndex(index, policyID, alias, replicas, shards, mapping, settings) - } + ): Pair = super.createIndex(index, policyID, alias, replicas, shards, mapping, settings) - fun getExplainManagedIndexMetaDataExt(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData { - return super.getExplainManagedIndexMetaData(indexName, userClient) - } + fun getExplainManagedIndexMetaDataExt(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData = super.getExplainManagedIndexMetaData(indexName, userClient) } private object TransformRestTestCaseExt : TransformRestTestCase() { @@ -144,9 +140,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { protected fun createRollup( rollup: Rollup, client: RestClient, - ): Rollup { - return RollupRestTestCaseSecurityExtension.createRollupExt(rollup, rollup.id, true, client) - } + ): Rollup = RollupRestTestCaseSecurityExtension.createRollupExt(rollup, rollup.id, true, client) protected fun createRollupAndCheckStatus( rollup: Rollup, @@ -162,16 +156,12 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { metadataId: String, refresh: Boolean = true, header: BasicHeader = BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json"), - ): RollupMetadata { - return RollupRestTestCaseSecurityExtension.getRollupMetadataExt(metadataId, refresh, header) - } + ): RollupMetadata = RollupRestTestCaseSecurityExtension.getRollupMetadataExt(metadataId, refresh, header) protected fun getRollup( rollupId: String, header: BasicHeader = BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json"), - ): Rollup { - return RollupRestTestCaseSecurityExtension.getRollupExt(rollupId, header) - } + ): Rollup = RollupRestTestCaseSecurityExtension.getRollupExt(rollupId, header) protected fun deleteRollup(rollupId: String, client: RestClient, expectedStatus: RestStatus) { val request = Request(RestRequest.Method.DELETE.name, "${IndexManagementPlugin.ROLLUP_JOBS_BASE_URI}/$rollupId") @@ -186,22 +176,16 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { RollupRestTestCaseSecurityExtension.putDateDocumentInSourceIndexExt(rollup) } - private fun createRollupMappingString(rollup: Rollup): String { - return RollupRestTestCaseSecurityExtension.createRollupMappingStringExt(rollup) - } + private fun createRollupMappingString(rollup: Rollup): String = RollupRestTestCaseSecurityExtension.createRollupMappingStringExt(rollup) - protected fun updateManagedIndexConfigStartTime(update: ManagedIndexConfig, desiredStartTimeMillis: Long? = null, retryOnConflict: Int = 0) { - return IndexStateManagementRestTestCaseExt.updateManagedIndexConfigStartTimeExt(update, desiredStartTimeMillis, retryOnConflict) - } + protected fun updateManagedIndexConfigStartTime(update: ManagedIndexConfig, desiredStartTimeMillis: Long? = null, retryOnConflict: Int = 0) = IndexStateManagementRestTestCaseExt.updateManagedIndexConfigStartTimeExt(update, desiredStartTimeMillis, retryOnConflict) protected fun createPolicy( policy: Policy, policyId: String = OpenSearchTestCase.randomAlphaOfLength(10), refresh: Boolean = true, client: RestClient?, - ): Policy { - return IndexStateManagementRestTestCaseExt.createPolicyExt(policy, policyId, refresh, client) - } + ): Policy = IndexStateManagementRestTestCaseExt.createPolicyExt(policy, policyId, refresh, client) protected fun managedIndexExplainAllAsMap( client: RestClient?, @@ -217,9 +201,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { policyId: String, refresh: Boolean = true, client: RestClient, - ): Response { - return IndexStateManagementRestTestCaseExt.createPolicyJsonExt(policyString, policyId, refresh, client) - } + ): Response = IndexStateManagementRestTestCaseExt.createPolicyJsonExt(policyString, policyId, refresh, client) protected fun deletePolicy(policyId: String, client: RestClient, expectedStatus: RestStatus) { val request = Request("DELETE", "${IndexManagementPlugin.POLICY_BASE_URI}/$policyId") @@ -237,9 +219,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { executeRequest(request, expectedStatus, client) } - protected fun getExplainManagedIndexMetaData(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData { - return IndexStateManagementRestTestCaseExt.getExplainManagedIndexMetaDataExt(indexName, userClient) - } + protected fun getExplainManagedIndexMetaData(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData = IndexStateManagementRestTestCaseExt.getExplainManagedIndexMetaDataExt(indexName, userClient) protected fun createIndex(indexName: String, sourceIndexMappingString: String?, client: RestClient) { val waitForActiveShards = if (isMultiNode) "all" else "1" @@ -269,9 +249,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { shards: String? = null, mapping: String = "", settings: Settings? = null, - ): Pair { - return IndexStateManagementRestTestCaseExt.createIndexExt(index, policyID, alias, replicas, shards, mapping, settings) - } + ): Pair = IndexStateManagementRestTestCaseExt.createIndexExt(index, policyID, alias, replicas, shards, mapping, settings) protected fun checkPolicies( userClient: RestClient, @@ -496,8 +474,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { } } - protected fun createReplicaCountTestPolicyRequest(priority: Int, indexPattern: String?): String { - return """ + protected fun createReplicaCountTestPolicyRequest(priority: Int, indexPattern: String?): String = """ { "policy": { "description": "test policy", @@ -521,8 +498,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { } } } - """.trimIndent() - } + """.trimIndent() companion object { const val AIRLINE_POLICY = "airline-policy" diff --git a/src/test/kotlin/org/opensearch/indexmanagement/TestHelpers.kt b/src/test/kotlin/org/opensearch/indexmanagement/TestHelpers.kt index 1712edcff..f52214b44 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/TestHelpers.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/TestHelpers.kt @@ -56,9 +56,7 @@ private fun randomStringList(): List { return data } -fun randomUser(): User { - return User(OpenSearchRestTestCase.randomAlphaOfLength(10), randomStringList(), randomStringList(), randomStringList()) -} +fun randomUser(): User = User(OpenSearchRestTestCase.randomAlphaOfLength(10), randomStringList(), randomStringList(), randomStringList()) /** * Wrapper for [RestClient.performRequest] which was deprecated in ES 6.5 and is used in tests. This provides diff --git a/src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt index 6ca38067c..967fedbe5 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt @@ -257,25 +257,23 @@ class TransformSecurityBehaviorIT : SecurityRestTestCase() { private fun createSimpleTransform( sourceIndex: String, targetIndex: String, - ): Transform { - return Transform( - id = "id_1", - schemaVersion = 1L, - enabled = true, - enabledAt = Instant.now(), - updatedAt = Instant.now(), - jobSchedule = IntervalSchedule(Instant.now(), 1, ChronoUnit.MINUTES), - description = "test transform", - metadataId = null, - sourceIndex = sourceIndex, - targetIndex = targetIndex, - roles = emptyList(), - pageSize = 100, - groups = listOf( - Terms(sourceField = "store_and_fwd_flag", targetField = "flag"), - ), - ) - } + ): Transform = Transform( + id = "id_1", + schemaVersion = 1L, + enabled = true, + enabledAt = Instant.now(), + updatedAt = Instant.now(), + jobSchedule = IntervalSchedule(Instant.now(), 1, ChronoUnit.MINUTES), + description = "test transform", + metadataId = null, + sourceIndex = sourceIndex, + targetIndex = targetIndex, + roles = emptyList(), + pageSize = 100, + groups = listOf( + Terms(sourceField = "store_and_fwd_flag", targetField = "flag"), + ), + ) private fun createTestUserWithRole(clusterPermissions: List, indexPermissions: List) { val testBackendRole = testRole + "_backend" diff --git a/src/test/kotlin/org/opensearch/indexmanagement/bwc/ISMBackwardsCompatibilityIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/bwc/ISMBackwardsCompatibilityIT.kt index 687d3f227..242ca86d7 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/bwc/ISMBackwardsCompatibilityIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/bwc/ISMBackwardsCompatibilityIT.kt @@ -26,29 +26,25 @@ class ISMBackwardsCompatibilityIT : IndexStateManagementRestTestCase() { ; companion object { - fun parse(value: String): ClusterType { - return when (value) { - "old_cluster" -> OLD - "mixed_cluster" -> MIXED - "upgraded_cluster" -> UPGRADED - else -> throw AssertionError("Unknown cluster type: $value") - } + fun parse(value: String): ClusterType = when (value) { + "old_cluster" -> OLD + "mixed_cluster" -> MIXED + "upgraded_cluster" -> UPGRADED + else -> throw AssertionError("Unknown cluster type: $value") } } } - private fun getPluginUri(): String { - return when (CLUSTER_TYPE) { - ClusterType.OLD -> "_nodes/$CLUSTER_NAME-0/plugins" - ClusterType.MIXED -> { - when (System.getProperty("tests.rest.bwcsuite_round")) { - "second" -> "_nodes/$CLUSTER_NAME-1/plugins" - "third" -> "_nodes/$CLUSTER_NAME-2/plugins" - else -> "_nodes/$CLUSTER_NAME-0/plugins" - } + private fun getPluginUri(): String = when (CLUSTER_TYPE) { + ClusterType.OLD -> "_nodes/$CLUSTER_NAME-0/plugins" + ClusterType.MIXED -> { + when (System.getProperty("tests.rest.bwcsuite_round")) { + "second" -> "_nodes/$CLUSTER_NAME-1/plugins" + "third" -> "_nodes/$CLUSTER_NAME-2/plugins" + else -> "_nodes/$CLUSTER_NAME-0/plugins" } - ClusterType.UPGRADED -> "_nodes/plugins" } + ClusterType.UPGRADED -> "_nodes/plugins" } companion object { @@ -62,15 +58,13 @@ class ISMBackwardsCompatibilityIT : IndexStateManagementRestTestCase() { override fun preserveTemplatesUponCompletion(): Boolean = true - override fun restClientSettings(): Settings { - return Settings.builder() - .put(super.restClientSettings()) - // increase the timeout here to 90 seconds to handle long waits for a green - // cluster health. the waits for green need to be longer than a minute to - // account for delayed shards - .put(CLIENT_SOCKET_TIMEOUT, "90s") - .build() - } + override fun restClientSettings(): Settings = Settings.builder() + .put(super.restClientSettings()) + // increase the timeout here to 90 seconds to handle long waits for a green + // cluster health. the waits for green need to be longer than a minute to + // account for delayed shards + .put(CLIENT_SOCKET_TIMEOUT, "90s") + .build() @Throws(Exception::class) @Suppress("UNCHECKED_CAST") diff --git a/src/test/kotlin/org/opensearch/indexmanagement/bwc/IndexManagementBackwardsCompatibilityIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/bwc/IndexManagementBackwardsCompatibilityIT.kt index 5fd0d5aac..dd4596fc0 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/bwc/IndexManagementBackwardsCompatibilityIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/bwc/IndexManagementBackwardsCompatibilityIT.kt @@ -37,15 +37,13 @@ class IndexManagementBackwardsCompatibilityIT : IndexManagementRestTestCase() { override fun preserveTemplatesUponCompletion(): Boolean = true - override fun restClientSettings(): Settings { - return Settings.builder() - .put(super.restClientSettings()) - // increase the timeout here to 90 seconds to handle long waits for a green - // cluster health. the waits for green need to be longer than a minute to - // account for delayed shards - .put(CLIENT_SOCKET_TIMEOUT, "90s") - .build() - } + override fun restClientSettings(): Settings = Settings.builder() + .put(super.restClientSettings()) + // increase the timeout here to 90 seconds to handle long waits for a green + // cluster health. the waits for green need to be longer than a minute to + // account for delayed shards + .put(CLIENT_SOCKET_TIMEOUT, "90s") + .build() @Throws(Exception::class) @Suppress("UNCHECKED_CAST") @@ -87,29 +85,25 @@ class IndexManagementBackwardsCompatibilityIT : IndexManagementRestTestCase() { ; companion object { - fun parse(value: String): ClusterType { - return when (value) { - "old_cluster" -> OLD - "mixed_cluster" -> MIXED - "upgraded_cluster" -> UPGRADED - else -> throw AssertionError("Unknown cluster type: $value") - } + fun parse(value: String): ClusterType = when (value) { + "old_cluster" -> OLD + "mixed_cluster" -> MIXED + "upgraded_cluster" -> UPGRADED + else -> throw AssertionError("Unknown cluster type: $value") } } } - private fun getPluginUri(): String { - return when (CLUSTER_TYPE) { - ClusterType.OLD -> "_nodes/$CLUSTER_NAME-0/plugins" - ClusterType.MIXED -> { - when (System.getProperty("tests.rest.bwcsuite_round")) { - "second" -> "_nodes/$CLUSTER_NAME-1/plugins" - "third" -> "_nodes/$CLUSTER_NAME-2/plugins" - else -> "_nodes/$CLUSTER_NAME-0/plugins" - } + private fun getPluginUri(): String = when (CLUSTER_TYPE) { + ClusterType.OLD -> "_nodes/$CLUSTER_NAME-0/plugins" + ClusterType.MIXED -> { + when (System.getProperty("tests.rest.bwcsuite_round")) { + "second" -> "_nodes/$CLUSTER_NAME-1/plugins" + "third" -> "_nodes/$CLUSTER_NAME-2/plugins" + else -> "_nodes/$CLUSTER_NAME-0/plugins" } - ClusterType.UPGRADED -> "_nodes/plugins" } + ClusterType.UPGRADED -> "_nodes/plugins" } @Throws(Exception::class) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/SerializationTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/SerializationTests.kt index f5d4df756..05b4a9e8f 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/SerializationTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/SerializationTests.kt @@ -75,7 +75,5 @@ class SerializationTests : OpenSearchTestCase() { private fun buildMessage( itemType: String, - ): String { - return "$itemType serialization test failed. " - } + ): String = "$itemType serialization test failed. " } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/TestHelpers.kt b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/TestHelpers.kt index 621357d25..d4171828e 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/TestHelpers.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/TestHelpers.kt @@ -62,20 +62,14 @@ fun randomLRONConfig( fun randomLRONCondition( success: Boolean = randomBoolean(), failure: Boolean = randomBoolean(), -): LRONCondition { - return LRONCondition(success, failure) -} +): LRONCondition = LRONCondition(success, failure) fun randomTaskId( nodeId: String = UUIDs.randomBase64UUID(), id: Long = randomLong(), -): TaskId { - return TaskId(nodeId, id) -} +): TaskId = TaskId(nodeId, id) -fun randomActionName(): String { - return supportedActions.random() -} +fun randomActionName(): String = supportedActions.random() fun randomLRONConfigResponse( lronConfig: LRONConfig = randomLRONConfig(), @@ -89,17 +83,13 @@ fun randomLRONConfigResponse( fun randomGetLRONConfigResponse( size: Int = 10, -): GetLRONConfigResponse { - return GetLRONConfigResponse( - lronConfigResponses = List(size) { randomLRONConfigResponse() }, - size, - ) -} +): GetLRONConfigResponse = GetLRONConfigResponse( + lronConfigResponses = List(size) { randomLRONConfigResponse() }, + size, +) fun LRONConfig.toJsonString(params: ToXContent.Params = ToXContent.EMPTY_PARAMS): String = this.toXContent( XContentFactory.jsonBuilder(), params, ).string() -fun getResourceURI(taskId: TaskId?, actionName: String?): String { - return "${IndexManagementPlugin.LRON_BASE_URI}/${getDocID(taskId, actionName)}" -} +fun getResourceURI(taskId: TaskId?, actionName: String?): String = "${IndexManagementPlugin.LRON_BASE_URI}/${getDocID(taskId, actionName)}" diff --git a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/XContentTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/XContentTests.kt index 417e3803e..c8d0503f2 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/XContentTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/XContentTests.kt @@ -139,9 +139,7 @@ class XContentTests : OpenSearchTestCase() { private fun buildMessage( itemType: String, xContentType: XContentType, - ): String { - return "$itemType toXContent test failed. xContentType: ${xContentType.subtype()}. " - } + ): String = "$itemType toXContent test failed. xContentType: ${xContentType.subtype()}. " private fun parsedItem( item: T, diff --git a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/LRONConfigRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/LRONConfigRestTestCase.kt index 0e2860030..910214bc5 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/LRONConfigRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/resthandler/LRONConfigRestTestCase.kt @@ -44,9 +44,7 @@ abstract class LRONConfigRestTestCase : IndexManagementRestTestCase() { } } - fun createLRONConfig(lronConfig: LRONConfig): Response { - return client().makeRequest("POST", IndexManagementPlugin.LRON_BASE_URI, emptyMap(), lronConfig.toHttpEntity()) - } + fun createLRONConfig(lronConfig: LRONConfig): Response = client().makeRequest("POST", IndexManagementPlugin.LRON_BASE_URI, emptyMap(), lronConfig.toHttpEntity()) protected fun LRONConfig.toHttpEntity(): HttpEntity = StringEntity(toJsonString(), ContentType.APPLICATION_JSON) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementIntegTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementIntegTestCase.kt index 7aa4ecb51..42e58f25d 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementIntegTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementIntegTestCase.kt @@ -88,20 +88,18 @@ abstract class IndexStateManagementIntegTestCase : OpenSearchIntegTestCase() { info = mapOf("message" to "Happy moving"), ) - override fun nodePlugins(): Collection> { - return listOf(IndexManagementPlugin::class.java) - } - - class TestPlugin : ActionPlugin, Plugin() { - override fun getActions(): List> { - return listOf( - ActionPlugin.ActionHandler( - UpdateManagedIndexMetaDataAction.INSTANCE, - TransportUpdateManagedIndexMetaDataAction::class.java, - ), - ActionPlugin.ActionHandler(ExplainAction.INSTANCE, TransportExplainAction::class.java), - ) - } + override fun nodePlugins(): Collection> = listOf(IndexManagementPlugin::class.java) + + class TestPlugin : + Plugin(), + ActionPlugin { + override fun getActions(): List> = listOf( + ActionPlugin.ActionHandler( + UpdateManagedIndexMetaDataAction.INSTANCE, + TransportUpdateManagedIndexMetaDataAction::class.java, + ), + ActionPlugin.ActionHandler(ExplainAction.INSTANCE, TransportExplainAction::class.java), + ) } // TODO: ...convert into a test REST plugin that allows us to execute the transport action? @@ -109,12 +107,10 @@ abstract class IndexStateManagementIntegTestCase : OpenSearchIntegTestCase() { // return listOf(TestPlugin::class.java) // } - protected fun getIndexMetadata(indexName: String): IndexMetadata? { - return client().admin().cluster().prepareState() - .setIndices(indexName) - .setMetadata(true).get() - .state.metadata.indices[indexName] - } + protected fun getIndexMetadata(indexName: String): IndexMetadata? = client().admin().cluster().prepareState() + .setIndices(indexName) + .setMetadata(true).get() + .state.metadata.indices[indexName] // reuse utility fun from RestTestCase fun createPolicy( @@ -171,12 +167,10 @@ abstract class IndexStateManagementIntegTestCase : OpenSearchIntegTestCase() { assertEquals("Unexpected RestStatus", RestStatus.OK, response.restStatus()) } - protected fun getExistingManagedIndexConfig(index: String): ManagedIndexConfig { - return waitFor { - val config = getManagedIndexConfig(index) - assertNotNull("ManagedIndexConfig is null", config) - config!! - } + protected fun getExistingManagedIndexConfig(index: String): ManagedIndexConfig = waitFor { + val config = getManagedIndexConfig(index) + assertNotNull("ManagedIndexConfig is null", config) + config!! } protected fun getManagedIndexConfig(index: String): ManagedIndexConfig? { diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt index eba400beb..1bdba5c9f 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt @@ -422,12 +422,10 @@ abstract class IndexStateManagementRestTestCase : IndexManagementRestTestCase() } } - protected fun getExistingManagedIndexConfig(index: String): ManagedIndexConfig { - return waitFor { - val config = getManagedIndexConfig(index) - assertNotNull("ManagedIndexConfig is null", config) - config!! - } + protected fun getExistingManagedIndexConfig(index: String): ManagedIndexConfig = waitFor { + val config = getManagedIndexConfig(index) + assertNotNull("ManagedIndexConfig is null", config) + config!! } protected fun updateManagedIndexConfigStartTime(update: ManagedIndexConfig, desiredStartTimeMillis: Long? = null, retryOnConflict: Int = 0) { @@ -494,14 +492,12 @@ abstract class IndexStateManagementRestTestCase : IndexManagementRestTestCase() } // Useful settings when debugging to prevent timeouts - override fun restClientSettings(): Settings { - return if (isDebuggingTest || isDebuggingRemoteCluster) { - Settings.builder() - .put(CLIENT_SOCKET_TIMEOUT, TimeValue.timeValueMinutes(10)) - .build() - } else { - super.restClientSettings() - } + override fun restClientSettings(): Settings = if (isDebuggingTest || isDebuggingRemoteCluster) { + Settings.builder() + .put(CLIENT_SOCKET_TIMEOUT, TimeValue.timeValueMinutes(10)) + .build() + } else { + super.restClientSettings() } // Validate segment count per shard by specifying the min and max it should be @@ -626,14 +622,10 @@ abstract class IndexStateManagementRestTestCase : IndexManagementRestTestCase() } @Suppress("UNCHECKED_CAST") - protected fun getIndexShardNodes(indexName: String): List { - return getIndexShards(indexName).map { element -> (element as Map)["node"]!! } - } + protected fun getIndexShardNodes(indexName: String): List = getIndexShards(indexName).map { element -> (element as Map)["node"]!! } @Suppress("UNCHECKED_CAST") - protected fun getIndexShards(indexName: String): List { - return getShardsList().filter { element -> (element as Map)["index"]!!.contains(indexName) } - } + protected fun getIndexShards(indexName: String): List = getShardsList().filter { element -> (element as Map)["index"]!!.contains(indexName) } @Suppress("UNCHECKED_CAST") protected fun getNodes(): MutableSet { @@ -1152,12 +1144,10 @@ abstract class IndexStateManagementRestTestCase : IndexManagementRestTestCase() } } - override fun xContentRegistry(): NamedXContentRegistry { - return NamedXContentRegistry( - listOf( - ClusterModule.getNamedXWriteables(), - SearchModule(Settings.EMPTY, emptyList()).namedXContents, - ).flatten(), - ) - } + override fun xContentRegistry(): NamedXContentRegistry = NamedXContentRegistry( + listOf( + ClusterModule.getNamedXWriteables(), + SearchModule(Settings.EMPTY, emptyList()).namedXContents, + ).flatten(), + ) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexConfigTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexConfigTests.kt index fa19739a6..919da3136 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexConfigTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexConfigTests.kt @@ -43,7 +43,5 @@ class ManagedIndexConfigTests : OpenSearchTestCase() { } } - private fun parserWithType(xc: String): XContentParser { - return XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) - } + private fun parserWithType(xc: String): XContentParser = XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/TestHelpers.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/TestHelpers.kt index 539ee0c0f..5cdbfb366 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/TestHelpers.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/TestHelpers.kt @@ -76,27 +76,21 @@ fun randomPolicy( errorNotification: ErrorNotification? = randomErrorNotification(), states: List = List(OpenSearchRestTestCase.randomIntBetween(1, 10)) { randomState() }, ismTemplate: List? = null, -): Policy { - return Policy( - id = id, schemaVersion = schemaVersion, lastUpdatedTime = lastUpdatedTime, - errorNotification = errorNotification, defaultState = states[0].name, states = states, description = description, ismTemplate = ismTemplate, - ) -} +): Policy = Policy( + id = id, schemaVersion = schemaVersion, lastUpdatedTime = lastUpdatedTime, + errorNotification = errorNotification, defaultState = states[0].name, states = states, description = description, ismTemplate = ismTemplate, +) fun randomState( name: String = OpenSearchRestTestCase.randomAlphaOfLength(10), actions: List = listOf(), transitions: List = listOf(), -): State { - return State(name = name, actions = actions, transitions = transitions) -} +): State = State(name = name, actions = actions, transitions = transitions) fun randomTransition( stateName: String = OpenSearchRestTestCase.randomAlphaOfLength(10), conditions: Conditions? = randomConditions(), -): Transition { - return Transition(stateName = stateName, conditions = conditions) -} +): Transition = Transition(stateName = stateName, conditions = conditions) /** * TODO: Excluded randomCronSchedule being included in randomConditions as two issues need to be resolved first: @@ -126,24 +120,20 @@ fun randomConditions( fun nonNullRandomConditions(): Conditions = randomConditions(OpenSearchRestTestCase.randomFrom(listOf(randomIndexAge(), randomDocCount(), randomSize())))!! -fun randomDeleteActionConfig(): DeleteAction { - return DeleteAction(index = 0) -} +fun randomDeleteActionConfig(): DeleteAction = DeleteAction(index = 0) fun randomRolloverActionConfig( minSize: ByteSizeValue = randomByteSizeValue(), minDocs: Long = OpenSearchRestTestCase.randomLongBetween(1, 1000), minAge: TimeValue = randomTimeValueObject(), minPrimaryShardSize: ByteSizeValue = randomByteSizeValue(), -): RolloverAction { - return RolloverAction( - minSize = minSize, - minDocs = minDocs, - minAge = minAge, - minPrimaryShardSize = minPrimaryShardSize, - index = 0, - ) -} +): RolloverAction = RolloverAction( + minSize = minSize, + minDocs = minDocs, + minAge = minAge, + minPrimaryShardSize = minPrimaryShardSize, + index = 0, +) @Suppress("ReturnCount") fun randomShrinkAction( @@ -165,55 +155,33 @@ fun randomShrinkAction( return ShrinkAction(numNewShards, maxShardSize, percentageOfSourceShards, targetIndexTemplate, aliases, switchAliases, forceUnsafe, 0) } -fun randomReadOnlyActionConfig(): ReadOnlyAction { - return ReadOnlyAction(index = 0) -} +fun randomReadOnlyActionConfig(): ReadOnlyAction = ReadOnlyAction(index = 0) -fun randomReadWriteActionConfig(): ReadWriteAction { - return ReadWriteAction(index = 0) -} +fun randomReadWriteActionConfig(): ReadWriteAction = ReadWriteAction(index = 0) -fun randomReplicaCountActionConfig(numOfReplicas: Int = OpenSearchRestTestCase.randomIntBetween(0, 200)): ReplicaCountAction { - return ReplicaCountAction(index = 0, numOfReplicas = numOfReplicas) -} +fun randomReplicaCountActionConfig(numOfReplicas: Int = OpenSearchRestTestCase.randomIntBetween(0, 200)): ReplicaCountAction = ReplicaCountAction(index = 0, numOfReplicas = numOfReplicas) -fun randomIndexPriorityActionConfig(indexPriority: Int = OpenSearchRestTestCase.randomIntBetween(0, 100)): IndexPriorityAction { - return IndexPriorityAction(index = 0, indexPriority = indexPriority) -} +fun randomIndexPriorityActionConfig(indexPriority: Int = OpenSearchRestTestCase.randomIntBetween(0, 100)): IndexPriorityAction = IndexPriorityAction(index = 0, indexPriority = indexPriority) fun randomForceMergeActionConfig( maxNumSegments: Int = OpenSearchRestTestCase.randomIntBetween(1, 50), -): ForceMergeAction { - return ForceMergeAction(maxNumSegments = maxNumSegments, index = 0) -} +): ForceMergeAction = ForceMergeAction(maxNumSegments = maxNumSegments, index = 0) fun randomNotificationActionConfig( destination: Destination = randomDestination(), messageTemplate: Script = randomTemplateScript("random message"), index: Int = 0, -): NotificationAction { - return NotificationAction(destination, null, messageTemplate, index) -} +): NotificationAction = NotificationAction(destination, null, messageTemplate, index) -fun randomAllocationActionConfig(require: Map = emptyMap(), exclude: Map = emptyMap(), include: Map = emptyMap()): AllocationAction { - return AllocationAction(require, include, exclude, index = 0) -} +fun randomAllocationActionConfig(require: Map = emptyMap(), exclude: Map = emptyMap(), include: Map = emptyMap()): AllocationAction = AllocationAction(require, include, exclude, index = 0) -fun randomRollupActionConfig(): RollupAction { - return RollupAction(ismRollup = randomISMRollup(), index = 0) -} +fun randomRollupActionConfig(): RollupAction = RollupAction(ismRollup = randomISMRollup(), index = 0) -fun randomTransformActionConfig(): TransformAction { - return TransformAction(ismTransform = randomISMTransform(), index = 0) -} +fun randomTransformActionConfig(): TransformAction = TransformAction(ismTransform = randomISMTransform(), index = 0) -fun randomCloseActionConfig(): CloseAction { - return CloseAction(index = 0) -} +fun randomCloseActionConfig(): CloseAction = CloseAction(index = 0) -fun randomOpenActionConfig(): OpenAction { - return OpenAction(index = 0) -} +fun randomOpenActionConfig(): OpenAction = OpenAction(index = 0) fun randomAliasAction(includeIndices: Boolean = false): AliasAction { val actions = List(OpenSearchRestTestCase.randomIntBetween(1, 10)) { if (includeIndices) randomAliasActionWithIndices() else randomAliasActions() } @@ -233,41 +201,33 @@ fun randomAliasActionWithIndices(): IndicesAliasesRequest.AliasActions { .indices(OpenSearchRestTestCase.randomAlphaOfLength(10)) } -fun randomDestination(type: DestinationType = randomDestinationType()): Destination { - return Destination( - type = type, - chime = if (type == DestinationType.CHIME) randomChime() else null, - slack = if (type == DestinationType.SLACK) randomSlack() else null, - customWebhook = if (type == DestinationType.CUSTOM_WEBHOOK) randomCustomWebhook() else null, - ) -} +fun randomDestination(type: DestinationType = randomDestinationType()): Destination = Destination( + type = type, + chime = if (type == DestinationType.CHIME) randomChime() else null, + slack = if (type == DestinationType.SLACK) randomSlack() else null, + customWebhook = if (type == DestinationType.CUSTOM_WEBHOOK) randomCustomWebhook() else null, +) fun randomDestinationType(): DestinationType { val types = listOf(DestinationType.SLACK, DestinationType.CHIME, DestinationType.CUSTOM_WEBHOOK) return OpenSearchRestTestCase.randomSubsetOf(1, types).first() } -fun randomChime(): Chime { - return Chime("https://www.amazon.com") -} +fun randomChime(): Chime = Chime("https://www.amazon.com") -fun randomSlack(): Slack { - return Slack("https://www.amazon.com") -} +fun randomSlack(): Slack = Slack("https://www.amazon.com") -fun randomCustomWebhook(): CustomWebhook { - return CustomWebhook( - url = "https://www.amazon.com", - scheme = null, - host = null, - port = -1, - path = null, - queryParams = emptyMap(), - headerParams = emptyMap(), - username = null, - password = null, - ) -} +fun randomCustomWebhook(): CustomWebhook = CustomWebhook( + url = "https://www.amazon.com", + scheme = null, + host = null, + port = -1, + path = null, + queryParams = emptyMap(), + headerParams = emptyMap(), + username = null, + password = null, +) fun randomTemplateScript( source: String = OpenSearchRestTestCase.randomAlphaOfLength(10), @@ -276,9 +236,7 @@ fun randomTemplateScript( lang: String = Script.DEFAULT_TEMPLATE_LANG, ): Script = Script(scriptType, lang, source, params) -fun randomSnapshotActionConfig(repository: String = "repo", snapshot: String = "sp"): SnapshotAction { - return SnapshotAction(repository, snapshot, index = 0) -} +fun randomSnapshotActionConfig(repository: String = "repo", snapshot: String = "sp"): SnapshotAction = SnapshotAction(repository, snapshot, index = 0) /** * Helper functions for creating a random Conditions object @@ -311,18 +269,14 @@ fun randomExplainFilter( state: String? = if (OpenSearchRestTestCase.randomBoolean()) OpenSearchRestTestCase.randomAlphaOfLength(10) else null, actionType: String? = if (OpenSearchRestTestCase.randomBoolean()) OpenSearchRestTestCase.randomAlphaOfLength(10) else null, failed: Boolean? = if (OpenSearchRestTestCase.randomBoolean()) OpenSearchRestTestCase.randomBoolean() else null, -): ExplainFilter { - return ExplainFilter(policyID, state, actionType, failed) -} +): ExplainFilter = ExplainFilter(policyID, state, actionType, failed) fun randomChangePolicy( policyID: String = OpenSearchRestTestCase.randomAlphaOfLength(10), state: String? = if (OpenSearchRestTestCase.randomBoolean()) OpenSearchRestTestCase.randomAlphaOfLength(10) else null, include: List = emptyList(), isSafe: Boolean = false, -): ChangePolicy { - return ChangePolicy(policyID, state, include, isSafe) -} +): ChangePolicy = ChangePolicy(policyID, state, include, isSafe) // will only return null since we dont want to send actual notifications during integ tests @Suppress("FunctionOnlyReturningConstant") @@ -340,23 +294,21 @@ fun randomManagedIndexConfig( policy: Policy? = randomPolicy(), changePolicy: ChangePolicy? = randomChangePolicy(), jitter: Double? = 0.0, -): ManagedIndexConfig { - return ManagedIndexConfig( - jobName = name, - index = index, - indexUuid = uuid, - enabled = enabled, - jobSchedule = schedule, - jobLastUpdatedTime = lastUpdatedTime, - jobEnabledTime = enabledTime, - policyID = policy?.id ?: policyID, - policySeqNo = policy?.seqNo, - policyPrimaryTerm = policy?.primaryTerm, - policy = policy?.copy(seqNo = SequenceNumbers.UNASSIGNED_SEQ_NO, primaryTerm = SequenceNumbers.UNASSIGNED_PRIMARY_TERM), - changePolicy = changePolicy, - jobJitter = jitter, - ) -} +): ManagedIndexConfig = ManagedIndexConfig( + jobName = name, + index = index, + indexUuid = uuid, + enabled = enabled, + jobSchedule = schedule, + jobLastUpdatedTime = lastUpdatedTime, + jobEnabledTime = enabledTime, + policyID = policy?.id ?: policyID, + policySeqNo = policy?.seqNo, + policyPrimaryTerm = policy?.primaryTerm, + policy = policy?.copy(seqNo = SequenceNumbers.UNASSIGNED_SEQ_NO, primaryTerm = SequenceNumbers.UNASSIGNED_PRIMARY_TERM), + changePolicy = changePolicy, + jobJitter = jitter, +) fun randomClusterStateManagedIndexConfig( index: String = OpenSearchRestTestCase.randomAlphaOfLength(10), @@ -364,15 +316,13 @@ fun randomClusterStateManagedIndexConfig( policyID: String = OpenSearchRestTestCase.randomAlphaOfLength(10), seqNo: Long = SequenceNumbers.UNASSIGNED_SEQ_NO, primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, -): ClusterStateManagedIndexConfig { - return ClusterStateManagedIndexConfig( - index = index, - uuid = uuid, - policyID = policyID, - seqNo = seqNo, - primaryTerm = primaryTerm, - ) -} +): ClusterStateManagedIndexConfig = ClusterStateManagedIndexConfig( + index = index, + uuid = uuid, + policyID = policyID, + seqNo = seqNo, + primaryTerm = primaryTerm, +) fun randomSweptManagedIndexConfig( index: String = OpenSearchRestTestCase.randomAlphaOfLength(10), @@ -382,33 +332,27 @@ fun randomSweptManagedIndexConfig( primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM, changePolicy: ChangePolicy? = null, policy: Policy? = null, -): SweptManagedIndexConfig { - return SweptManagedIndexConfig( - index = index, - uuid = uuid, - policyID = policyID, - seqNo = seqNo, - primaryTerm = primaryTerm, - policy = policy, - changePolicy = changePolicy, - ) -} +): SweptManagedIndexConfig = SweptManagedIndexConfig( + index = index, + uuid = uuid, + policyID = policyID, + seqNo = seqNo, + primaryTerm = primaryTerm, + policy = policy, + changePolicy = changePolicy, +) fun randomISMTemplate( indexPatterns: List = listOf(OpenSearchRestTestCase.randomAlphaOfLength(10) + "*"), priority: Int = OpenSearchRestTestCase.randomIntBetween(0, 100), lastUpdatedTime: Instant = Instant.now().truncatedTo(ChronoUnit.MILLIS), -): ISMTemplate { - return ISMTemplate( - indexPatterns = indexPatterns, - priority = priority, - lastUpdatedTime = lastUpdatedTime, - ) -} +): ISMTemplate = ISMTemplate( + indexPatterns = indexPatterns, + priority = priority, + lastUpdatedTime = lastUpdatedTime, +) -fun randomChannel(id: String = OpenSearchRestTestCase.randomAlphaOfLength(10)): Channel { - return Channel(id = id) -} +fun randomChannel(id: String = OpenSearchRestTestCase.randomAlphaOfLength(10)): Channel = Channel(id = id) fun Policy.toJsonString(): String { val builder = XContentFactory.jsonBuilder() diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionIT.kt index 0eaa8115d..651d4ed28 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransformActionIT.kt @@ -165,24 +165,22 @@ class TransformActionIT : IndexStateManagementRestTestCase() { } // create an ISMTransform that matches SOURCE_INDEX_MAPPING - private fun prepareISMTransform(targetIndex: String): ISMTransform { - return ISMTransform( - description = "test transform", - targetIndex = targetIndex, - pageSize = 100, - dataSelectionQuery = MatchAllQueryBuilder(), - groups = listOf( - DateHistogram(sourceField = "timestamp", fixedInterval = "1d"), - Terms(sourceField = "category", targetField = "category"), - ), - aggregations = AggregatorFactories.builder() - .addAggregator(sumAggregation()) - .addAggregator(maxAggregation()) - .addAggregator(minAggregation()) - .addAggregator(avgAggregation()) - .addAggregator(valueCountAggregation()), - ) - } + private fun prepareISMTransform(targetIndex: String): ISMTransform = ISMTransform( + description = "test transform", + targetIndex = targetIndex, + pageSize = 100, + dataSelectionQuery = MatchAllQueryBuilder(), + groups = listOf( + DateHistogram(sourceField = "timestamp", fixedInterval = "1d"), + Terms(sourceField = "category", targetField = "category"), + ), + aggregations = AggregatorFactories.builder() + .addAggregator(sumAggregation()) + .addAggregator(maxAggregation()) + .addAggregator(minAggregation()) + .addAggregator(avgAggregation()) + .addAggregator(valueCountAggregation()), + ) private fun preparePolicyContainingTransform(indexName: String, ismTransform: ISMTransform, policyId: String, retry: Long = 0): Policy { val actionConfig = TransformAction(ismTransform, 0) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/extension/SampleCustomActionParser.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/extension/SampleCustomActionParser.kt index b3a6fb1ee..fccab6a7c 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/extension/SampleCustomActionParser.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/extension/SampleCustomActionParser.kt @@ -41,9 +41,7 @@ class SampleCustomActionParser : ActionParser() { return SampleCustomAction(someInt = requireNotNull(someInt) { "SomeInt field must be specified" }, index) } - override fun getActionType(): String { - return SampleCustomAction.name - } + override fun getActionType(): String = SampleCustomAction.name class SampleCustomAction(val someInt: Int, index: Int) : Action(name, index) { private val sampleCustomStep = SampleCustomStep() @@ -77,13 +75,11 @@ class SampleCustomActionParser : ActionParser() { return this } - override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData { - return currentMetadata.copy( - stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), - transitionTo = null, - info = null, - ) - } + override fun getUpdatedManagedIndexMetadata(currentMetadata: ManagedIndexMetaData): ManagedIndexMetaData = currentMetadata.copy( + stepMetaData = StepMetaData(name, getStepStartTime(currentMetadata).toEpochMilli(), stepStatus), + transitionTo = null, + info = null, + ) override fun isIdempotent(): Boolean = true diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/XContentTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/XContentTests.kt index 1d14a005e..48aa45815 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/XContentTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/XContentTests.kt @@ -307,7 +307,5 @@ class XContentTests : OpenSearchTestCase() { return parser } - private fun parserWithType(xc: String): XContentParser { - return XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) - } + private fun parserWithType(xc: String): XContentParser = XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtilsTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtilsTests.kt index 8d80a439d..615539e10 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtilsTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/util/ManagedIndexUtilsTests.kt @@ -282,28 +282,22 @@ class ManagedIndexUtilsTests : OpenSearchTestCase() { ) } - private fun contentParser(bytesReference: BytesReference): XContentParser { - return XContentHelper.createParser( - xContentRegistry(), LoggingDeprecationHandler.INSTANCE, - bytesReference, XContentType.JSON, - ) - } - - private fun createMessageWithHost(host: String): LegacyBaseMessage { - return LegacyCustomWebhookMessage.Builder("abc") - .withHost(host) - .withPath("incomingwebhooks/383c0e2b-d028-44f4-8d38-696754bc4574") - .withMessage("{\"Content\":\"Message test\"}") - .withMethod("POST") - .withQueryParams(HashMap()).build() - } - - private fun createMessageWithURl(url: String): LegacyBaseMessage { - return LegacyCustomWebhookMessage.Builder("abc") - .withUrl(url) - .withPath("incomingwebhooks/383c0e2b-d028-44f4-8d38-696754bc4574") - .withMessage("{\"Content\":\"Message test\"}") - .withMethod("POST") - .withQueryParams(HashMap()).build() - } + private fun contentParser(bytesReference: BytesReference): XContentParser = XContentHelper.createParser( + xContentRegistry(), LoggingDeprecationHandler.INSTANCE, + bytesReference, XContentType.JSON, + ) + + private fun createMessageWithHost(host: String): LegacyBaseMessage = LegacyCustomWebhookMessage.Builder("abc") + .withHost(host) + .withPath("incomingwebhooks/383c0e2b-d028-44f4-8d38-696754bc4574") + .withMessage("{\"Content\":\"Message test\"}") + .withMethod("POST") + .withQueryParams(HashMap()).build() + + private fun createMessageWithURl(url: String): LegacyBaseMessage = LegacyCustomWebhookMessage.Builder("abc") + .withUrl(url) + .withPath("incomingwebhooks/383c0e2b-d028-44f4-8d38-696754bc4574") + .withMessage("{\"Content\":\"Message test\"}") + .withMethod("POST") + .withQueryParams(HashMap()).build() } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RefreshSearchAnalyzerActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RefreshSearchAnalyzerActionIT.kt index c601c4186..04a84c04f 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RefreshSearchAnalyzerActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/refreshanalyzer/RefreshSearchAnalyzerActionIT.kt @@ -207,8 +207,7 @@ class RefreshSearchAnalyzerActionIT : IndexManagementRestTestCase() { client().performRequest(request) } - fun getSearchAnalyzerSettings(): String { - return """ + fun getSearchAnalyzerSettings(): String = """ { "index" : { "analysis" : { @@ -228,11 +227,9 @@ class RefreshSearchAnalyzerActionIT : IndexManagementRestTestCase() { } } } - """.trimIndent() - } + """.trimIndent() - fun getIndexAnalyzerSettings(): String { - return """ + fun getIndexAnalyzerSettings(): String = """ { "index" : { "analysis" : { @@ -251,11 +248,9 @@ class RefreshSearchAnalyzerActionIT : IndexManagementRestTestCase() { } } } - """.trimIndent() - } + """.trimIndent() - fun getAnalyzerMapping(): String { - return """ + fun getAnalyzerMapping(): String = """ "properties": { "title": { "type": "text", @@ -263,7 +258,6 @@ class RefreshSearchAnalyzerActionIT : IndexManagementRestTestCase() { "search_analyzer": "my_synonyms" } } - """.trimIndent() - } + """.trimIndent() } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/rollup/TestHelpers.kt b/src/test/kotlin/org/opensearch/indexmanagement/rollup/TestHelpers.kt index 11b7c4f72..7bbf55df7 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/rollup/TestHelpers.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/rollup/TestHelpers.kt @@ -118,19 +118,15 @@ fun randomRollup(): Rollup { ) } -fun randomRollupStats(): RollupStats { - return RollupStats( - pagesProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), - documentsProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), - rollupsIndexed = OpenSearchRestTestCase.randomNonNegativeLong(), - indexTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), - searchTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), - ) -} +fun randomRollupStats(): RollupStats = RollupStats( + pagesProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), + documentsProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), + rollupsIndexed = OpenSearchRestTestCase.randomNonNegativeLong(), + indexTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), + searchTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), +) -fun randomRollupMetadataStatus(): RollupMetadata.Status { - return OpenSearchRestTestCase.randomFrom(RollupMetadata.Status.values().toList()) -} +fun randomRollupMetadataStatus(): RollupMetadata.Status = OpenSearchRestTestCase.randomFrom(RollupMetadata.Status.values().toList()) fun randomContinuousMetadata(): ContinuousMetadata { val one = randomInstant() @@ -141,12 +137,10 @@ fun randomContinuousMetadata(): ContinuousMetadata { ) } -fun randomAfterKey(): Map? { - return if (OpenSearchRestTestCase.randomBoolean()) { - null - } else { - mapOf("test" to 17) - } +fun randomAfterKey(): Map? = if (OpenSearchRestTestCase.randomBoolean()) { + null +} else { + mapOf("test" to 17) } fun randomRollupMetadata(): RollupMetadata { @@ -170,63 +164,51 @@ fun randomExplainRollup(): ExplainRollup { return ExplainRollup(metadataID = metadata.id, metadata = metadata) } -fun randomISMRollup(): ISMRollup { - return ISMRollup( - description = OpenSearchRestTestCase.randomAlphaOfLength(10), - targetIndex = OpenSearchRestTestCase.randomAlphaOfLength(10).lowercase(Locale.ROOT), - pageSize = OpenSearchRestTestCase.randomIntBetween(1, 10000), - dimensions = randomRollupDimensions(), - metrics = OpenSearchRestTestCase.randomList(20, ::randomRollupMetrics).distinctBy { it.targetField }, - ) -} - -fun randomISMFieldCapabilities(): ISMFieldCapabilities { - return ISMFieldCapabilities( - name = OpenSearchRestTestCase.randomAlphaOfLength(10), - type = OpenSearchRestTestCase.randomAlphaOfLength(10), - isSearchable = OpenSearchRestTestCase.randomBoolean(), - isAggregatable = OpenSearchRestTestCase.randomBoolean(), - indices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, true, true), - nonSearchableIndices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, true, true), - nonAggregatableIndices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, true, true), - meta = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to setOf(OpenSearchRestTestCase.randomAlphaOfLength(10))), - ) -} - -fun randomISMIndexFieldCapabilities(): ISMIndexFieldCapabilities { - return ISMIndexFieldCapabilities( - name = OpenSearchRestTestCase.randomAlphaOfLength(10), - type = OpenSearchRestTestCase.randomAlphaOfLength(10), - isSearchable = OpenSearchRestTestCase.randomBoolean(), - isAggregatable = OpenSearchRestTestCase.randomBoolean(), - meta = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to OpenSearchRestTestCase.randomAlphaOfLength(10)), - ) -} - -fun randomISMFieldCapabilitiesIndexResponse(): ISMFieldCapabilitiesIndexResponse { - return ISMFieldCapabilitiesIndexResponse( - indexName = OpenSearchRestTestCase.randomAlphaOfLength(10), - responseMap = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to randomISMIndexFieldCapabilities()), - canMatch = OpenSearchRestTestCase.randomBoolean(), - ) -} - -fun randomISMFieldCaps(): ISMFieldCapabilitiesResponse { - return ISMFieldCapabilitiesResponse( - indices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, false), - responseMap = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to randomISMFieldCapabilities())), - indexResponses = OpenSearchRestTestCase.randomList(4, ::randomISMFieldCapabilitiesIndexResponse), - ) -} +fun randomISMRollup(): ISMRollup = ISMRollup( + description = OpenSearchRestTestCase.randomAlphaOfLength(10), + targetIndex = OpenSearchRestTestCase.randomAlphaOfLength(10).lowercase(Locale.ROOT), + pageSize = OpenSearchRestTestCase.randomIntBetween(1, 10000), + dimensions = randomRollupDimensions(), + metrics = OpenSearchRestTestCase.randomList(20, ::randomRollupMetrics).distinctBy { it.targetField }, +) + +fun randomISMFieldCapabilities(): ISMFieldCapabilities = ISMFieldCapabilities( + name = OpenSearchRestTestCase.randomAlphaOfLength(10), + type = OpenSearchRestTestCase.randomAlphaOfLength(10), + isSearchable = OpenSearchRestTestCase.randomBoolean(), + isAggregatable = OpenSearchRestTestCase.randomBoolean(), + indices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, true, true), + nonSearchableIndices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, true, true), + nonAggregatableIndices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, true, true), + meta = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to setOf(OpenSearchRestTestCase.randomAlphaOfLength(10))), +) + +fun randomISMIndexFieldCapabilities(): ISMIndexFieldCapabilities = ISMIndexFieldCapabilities( + name = OpenSearchRestTestCase.randomAlphaOfLength(10), + type = OpenSearchRestTestCase.randomAlphaOfLength(10), + isSearchable = OpenSearchRestTestCase.randomBoolean(), + isAggregatable = OpenSearchRestTestCase.randomBoolean(), + meta = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to OpenSearchRestTestCase.randomAlphaOfLength(10)), +) + +fun randomISMFieldCapabilitiesIndexResponse(): ISMFieldCapabilitiesIndexResponse = ISMFieldCapabilitiesIndexResponse( + indexName = OpenSearchRestTestCase.randomAlphaOfLength(10), + responseMap = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to randomISMIndexFieldCapabilities()), + canMatch = OpenSearchRestTestCase.randomBoolean(), +) + +fun randomISMFieldCaps(): ISMFieldCapabilitiesResponse = ISMFieldCapabilitiesResponse( + indices = OpenSearchRestTestCase.generateRandomStringArray(10, 10, false), + responseMap = mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to mapOf(OpenSearchRestTestCase.randomAlphaOfLength(10) to randomISMFieldCapabilities())), + indexResponses = OpenSearchRestTestCase.randomList(4, ::randomISMFieldCapabilitiesIndexResponse), +) fun randomDimension(): Dimension { val dimensions = listOf(randomTerms(), randomHistogram(), randomDateHistogram()) return OpenSearchRestTestCase.randomSubsetOf(1, dimensions).first() } -fun randomTermQuery(): TermQueryBuilder { - return TermQueryBuilder(OpenSearchRestTestCase.randomAlphaOfLength(5), OpenSearchRestTestCase.randomAlphaOfLength(5)) -} +fun randomTermQuery(): TermQueryBuilder = TermQueryBuilder(OpenSearchRestTestCase.randomAlphaOfLength(5), OpenSearchRestTestCase.randomAlphaOfLength(5)) fun DateHistogram.toJsonString(): String = this.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS).string() diff --git a/src/test/kotlin/org/opensearch/indexmanagement/rollup/model/XContentTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/rollup/model/XContentTests.kt index 5c8ba60af..386bb21aa 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/rollup/model/XContentTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/rollup/model/XContentTests.kt @@ -134,7 +134,5 @@ class XContentTests : OpenSearchTestCase() { return parser } - private fun parserWithType(xc: String): XContentParser { - return XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) - } + private fun parserWithType(xc: String): XContentParser = XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/snapshotmanagement/TestUtils.kt b/src/test/kotlin/org/opensearch/indexmanagement/snapshotmanagement/TestUtils.kt index 8392e6bee..2ac47f365 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/snapshotmanagement/TestUtils.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/snapshotmanagement/TestUtils.kt @@ -59,30 +59,28 @@ fun randomSMMetadata( deletionLatestExecution: SMMetadata.LatestExecution? = null, creationRetryCount: Int? = null, deletionRetryCount: Int? = null, -): SMMetadata { - return SMMetadata( - policySeqNo = policySeqNo, - policyPrimaryTerm = policyPrimaryTerm, - creation = SMMetadata.WorkflowMetadata( - currentState = creationCurrentState, - trigger = SMMetadata.Trigger( - time = nextCreationTime, - ), - started = if (startedCreation != null) listOf(startedCreation) else null, - latestExecution = creationLatestExecution, - retry = creationRetryCount?.let { SMMetadata.Retry(it) }, +): SMMetadata = SMMetadata( + policySeqNo = policySeqNo, + policyPrimaryTerm = policyPrimaryTerm, + creation = SMMetadata.WorkflowMetadata( + currentState = creationCurrentState, + trigger = SMMetadata.Trigger( + time = nextCreationTime, ), - deletion = SMMetadata.WorkflowMetadata( - currentState = deletionCurrentState, - trigger = SMMetadata.Trigger( - time = nextDeletionTime, - ), - started = startedDeletion, - latestExecution = deletionLatestExecution, - retry = deletionRetryCount?.let { SMMetadata.Retry(it) }, + started = if (startedCreation != null) listOf(startedCreation) else null, + latestExecution = creationLatestExecution, + retry = creationRetryCount?.let { SMMetadata.Retry(it) }, + ), + deletion = SMMetadata.WorkflowMetadata( + currentState = deletionCurrentState, + trigger = SMMetadata.Trigger( + time = nextDeletionTime, ), - ) -} + started = startedDeletion, + latestExecution = deletionLatestExecution, + retry = deletionRetryCount?.let { SMMetadata.Retry(it) }, + ), +) fun randomLatestExecution( status: SMMetadata.LatestExecution.Status = SMMetadata.LatestExecution.Status.IN_PROGRESS, @@ -260,14 +258,12 @@ fun mockInProgressSnapshotInfo( fun mockSnapshotInfo( name: String = randomAlphaOfLength(10), snapshotState: SnapshotState, -): SnapshotInfo { - return SnapshotInfo( - SnapshotId(name, UUIDs.randomBase64UUID()), - emptyList(), - emptyList(), - snapshotState, - ) -} +): SnapshotInfo = SnapshotInfo( + SnapshotId(name, UUIDs.randomBase64UUID()), + emptyList(), + emptyList(), + snapshotState, +) fun mockGetSnapshotResponse(num: Int): GetSnapshotsResponse { val getSnapshotsRes: GetSnapshotsResponse = mock() diff --git a/src/test/kotlin/org/opensearch/indexmanagement/transform/TestHelpers.kt b/src/test/kotlin/org/opensearch/indexmanagement/transform/TestHelpers.kt index 7e0256583..50c08d76b 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/transform/TestHelpers.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/transform/TestHelpers.kt @@ -115,15 +115,13 @@ fun randomTransformMetadata(): TransformMetadata { ) } -fun randomTransformStats(): TransformStats { - return TransformStats( - pagesProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), - documentsProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), - documentsIndexed = OpenSearchRestTestCase.randomNonNegativeLong(), - indexTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), - searchTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), - ) -} +fun randomTransformStats(): TransformStats = TransformStats( + pagesProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), + documentsProcessed = OpenSearchRestTestCase.randomNonNegativeLong(), + documentsIndexed = OpenSearchRestTestCase.randomNonNegativeLong(), + indexTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), + searchTimeInMillis = OpenSearchRestTestCase.randomNonNegativeLong(), +) fun randomShardIDToGlobalCheckpoint(): Map { val numIndices = OpenSearchRestTestCase.randomIntBetween(1, 10) @@ -139,12 +137,10 @@ fun randomShardID(): ShardId { return ShardId(testIndex, shardNumber) } -fun randomContinuousStats(): ContinuousTransformStats { - return ContinuousTransformStats( - lastTimestamp = randomInstant(), - documentsBehind = randomDocumentsBehind(), - ) -} +fun randomContinuousStats(): ContinuousTransformStats = ContinuousTransformStats( + lastTimestamp = randomInstant(), + documentsBehind = randomDocumentsBehind(), +) fun randomDocumentsBehind(): Map { val numIndices = OpenSearchRestTestCase.randomIntBetween(1, 10) @@ -152,25 +148,21 @@ fun randomDocumentsBehind(): Map { return randomIndices.associateWith { OpenSearchRestTestCase.randomNonNegativeLong() } } -fun randomTransformMetadataStatus(): TransformMetadata.Status { - return OpenSearchRestTestCase.randomFrom(TransformMetadata.Status.values().toList()) -} +fun randomTransformMetadataStatus(): TransformMetadata.Status = OpenSearchRestTestCase.randomFrom(TransformMetadata.Status.values().toList()) fun randomExplainTransform(): ExplainTransform { val metadata = randomTransformMetadata() return ExplainTransform(metadataID = metadata.id, metadata = metadata) } -fun randomISMTransform(): ISMTransform { - return ISMTransform( - description = OpenSearchRestTestCase.randomAlphaOfLength(10), - targetIndex = OpenSearchRestTestCase.randomAlphaOfLength(10).lowercase(Locale.ROOT), - pageSize = OpenSearchRestTestCase.randomIntBetween(1, 10000), - groups = randomGroups(), - dataSelectionQuery = randomTermQuery(), - aggregations = randomAggregationFactories(), - ) -} +fun randomISMTransform(): ISMTransform = ISMTransform( + description = OpenSearchRestTestCase.randomAlphaOfLength(10), + targetIndex = OpenSearchRestTestCase.randomAlphaOfLength(10).lowercase(Locale.ROOT), + pageSize = OpenSearchRestTestCase.randomIntBetween(1, 10000), + groups = randomGroups(), + dataSelectionQuery = randomTermQuery(), + aggregations = randomAggregationFactories(), +) fun Transform.toJsonString(params: ToXContent.Params = ToXContent.EMPTY_PARAMS): String = this.toXContent(XContentFactory.jsonBuilder(), params).string() diff --git a/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRestTestCase.kt index 9aeba5f78..8cbf70cd1 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRestTestCase.kt @@ -220,7 +220,5 @@ abstract class TransformRestTestCase : IndexManagementRestTestCase() { protected fun Transform.toHttpEntity(): HttpEntity = StringEntity(toJsonString(), ContentType.APPLICATION_JSON) - override fun xContentRegistry(): NamedXContentRegistry { - return NamedXContentRegistry(SearchModule(Settings.EMPTY, emptyList()).namedXContents) - } + override fun xContentRegistry(): NamedXContentRegistry = NamedXContentRegistry(SearchModule(Settings.EMPTY, emptyList()).namedXContents) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRunnerIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRunnerIT.kt index 262aec5b5..e590f9fae 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRunnerIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/transform/TransformRunnerIT.kt @@ -1429,16 +1429,14 @@ class TransformRunnerIT : TransformRestTestCase() { disableTransform(transform.id) } - private fun getStrictMappings(): String { - return """ + private fun getStrictMappings(): String = """ "dynamic": "strict", "properties": { "some-column": { "type": "keyword" } } - """.trimIndent() - } + """.trimIndent() private fun validateSourceIndex(indexName: String) { if (!indexExists(indexName)) { diff --git a/src/test/kotlin/org/opensearch/indexmanagement/transform/model/XContentTests.kt b/src/test/kotlin/org/opensearch/indexmanagement/transform/model/XContentTests.kt index 2c931d69d..c38e63b45 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/transform/model/XContentTests.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/transform/model/XContentTests.kt @@ -69,11 +69,7 @@ class XContentTests : OpenSearchTestCase() { return parser } - private fun parserWithType(xc: String): XContentParser { - return XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) - } + private fun parserWithType(xc: String): XContentParser = XContentType.JSON.xContent().createParser(xContentRegistry(), LoggingDeprecationHandler.INSTANCE, xc) - override fun xContentRegistry(): NamedXContentRegistry { - return NamedXContentRegistry(SearchModule(Settings.EMPTY, emptyList()).namedXContents) - } + override fun xContentRegistry(): NamedXContentRegistry = NamedXContentRegistry(SearchModule(Settings.EMPTY, emptyList()).namedXContents) }