diff --git a/.github/workflows/security-test-workflow.yml b/.github/workflows/security-test-workflow.yml index 7fe56adfb..1f0c51b11 100644 --- a/.github/workflows/security-test-workflow.yml +++ b/.github/workflows/security-test-workflow.yml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@v2 - name: Run integration tests run: | - ./gradlew integTest -Dsecurity=true -Dhttps=true + ./gradlew integTest -Dsecurity=true -Dhttps=true -Dtests.class='*SecurityBehaviorIT' - name: Upload failed logs uses: actions/upload-artifact@v2 if: failure() diff --git a/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt b/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt index b5d23b6bc..f3086503c 100644 --- a/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt +++ b/src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt @@ -25,9 +25,9 @@ import org.opensearch.common.settings.Setting import org.opensearch.common.settings.Settings import org.opensearch.common.settings.SettingsFilter import org.opensearch.common.util.concurrent.ThreadContext +import org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken import org.opensearch.core.xcontent.NamedXContentRegistry import org.opensearch.core.xcontent.XContentParser.Token -import org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken import org.opensearch.env.Environment import org.opensearch.env.NodeEnvironment import org.opensearch.indexmanagement.controlcenter.notification.ControlCenterIndices @@ -125,6 +125,7 @@ import org.opensearch.indexmanagement.rollup.settings.RollupSettings import org.opensearch.indexmanagement.rollup.util.QueryShardContextFactory import org.opensearch.indexmanagement.rollup.util.RollupFieldValueExpressionResolver import org.opensearch.indexmanagement.settings.IndexManagementSettings +import org.opensearch.indexmanagement.snapshotmanagement.SMRunner import org.opensearch.indexmanagement.snapshotmanagement.api.resthandler.RestCreateSMPolicyHandler import org.opensearch.indexmanagement.snapshotmanagement.api.resthandler.RestDeleteSMPolicyHandler import org.opensearch.indexmanagement.snapshotmanagement.api.resthandler.RestExplainSMPolicyHandler @@ -140,7 +141,6 @@ import org.opensearch.indexmanagement.snapshotmanagement.api.transport.get.Trans import org.opensearch.indexmanagement.snapshotmanagement.api.transport.index.TransportIndexSMPolicyAction import org.opensearch.indexmanagement.snapshotmanagement.api.transport.start.TransportStartSMAction import org.opensearch.indexmanagement.snapshotmanagement.api.transport.stop.TransportStopSMAction -import org.opensearch.indexmanagement.snapshotmanagement.SMRunner import org.opensearch.indexmanagement.snapshotmanagement.model.SMMetadata import org.opensearch.indexmanagement.snapshotmanagement.model.SMPolicy import org.opensearch.indexmanagement.snapshotmanagement.settings.SnapshotManagementSettings 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 3ea39159c..c5c063ccf 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 @@ -26,23 +26,23 @@ import org.opensearch.client.node.NodeClient import org.opensearch.cluster.metadata.IndexMetadata import org.opensearch.cluster.service.ClusterService import org.opensearch.common.inject.Inject -import org.opensearch.common.util.concurrent.ThreadContext +import org.opensearch.common.settings.Settings import org.opensearch.common.xcontent.LoggingDeprecationHandler -import org.opensearch.core.xcontent.NamedXContentRegistry import org.opensearch.common.xcontent.XContentHelper import org.opensearch.common.xcontent.XContentType import org.opensearch.commons.ConfigConstants import org.opensearch.commons.authuser.User +import org.opensearch.core.xcontent.NamedXContentRegistry import org.opensearch.index.IndexNotFoundException import org.opensearch.index.query.Operator import org.opensearch.index.query.QueryBuilders import org.opensearch.indexmanagement.IndexManagementPlugin.Companion.INDEX_MANAGEMENT_INDEX +import org.opensearch.indexmanagement.common.model.rest.SearchParams import org.opensearch.indexmanagement.indexstatemanagement.IndexMetadataProvider import org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexCoordinator.Companion.MAX_HITS +import org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner.actionValidation import org.opensearch.indexmanagement.indexstatemanagement.model.ManagedIndexConfig import org.opensearch.indexmanagement.indexstatemanagement.model.Policy -import org.opensearch.indexmanagement.common.model.rest.SearchParams -import org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner.actionValidation import org.opensearch.indexmanagement.indexstatemanagement.opensearchapi.getManagedIndexMetadata import org.opensearch.indexmanagement.indexstatemanagement.transport.action.managedIndex.ManagedIndexAction import org.opensearch.indexmanagement.indexstatemanagement.transport.action.managedIndex.ManagedIndexRequest @@ -52,8 +52,10 @@ import org.opensearch.indexmanagement.indexstatemanagement.util.MANAGED_INDEX_NA import org.opensearch.indexmanagement.indexstatemanagement.util.MetadataCheck import org.opensearch.indexmanagement.indexstatemanagement.util.checkMetadata import org.opensearch.indexmanagement.indexstatemanagement.util.managedIndexMetadataID +import org.opensearch.indexmanagement.opensearchapi.IndexManagementSecurityContext import org.opensearch.indexmanagement.opensearchapi.parseWithType import org.opensearch.indexmanagement.opensearchapi.suspendUntil +import org.opensearch.indexmanagement.opensearchapi.withClosableContext import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ISMIndexMetadata import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ManagedIndexMetaData import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ValidationResult @@ -74,11 +76,12 @@ typealias ManagedIndexConfigDocUUID = String typealias ManagedIndexMetadataDocUUID = String // managedIndexMetadataID(indexUuid) -> #metadata typealias ManagedIndexMetadataMap = Map -@Suppress("SpreadOperator", "TooManyFunctions") +@Suppress("SpreadOperator", "TooManyFunctions", "LongParameterList") class TransportExplainAction @Inject constructor( val client: NodeClient, transportService: TransportService, actionFilters: ActionFilters, + val settings: Settings, val clusterService: ClusterService, val xContentRegistry: NamedXContentRegistry, val indexMetadataProvider: IndexMetadataProvider @@ -180,83 +183,81 @@ class TransportExplainAction @Inject constructor( } private fun searchForMetadata(searchRequest: SearchRequest) { - client.threadPool().threadContext.stashContext().use { threadContext -> - client.search( - searchRequest, - object : ActionListener { - override fun onResponse(response: SearchResponse) { - val totalHits = response.hits.totalHits - if (totalHits != null) { - totalManagedIndices = totalHits.value.toInt() - } + client.search( + searchRequest, + object : ActionListener { + override fun onResponse(response: SearchResponse) { + val totalHits = response.hits.totalHits + if (totalHits != null) { + totalManagedIndices = totalHits.value.toInt() + } - parseSearchHits(response.hits.hits).forEach { managedIndex -> - managedIndices.add(managedIndex.index) - enabledState[managedIndex.index] = managedIndex.enabled - managedIndicesMetaDataMap[managedIndex.index] = mapOf( - "index" to managedIndex.index, - "index_uuid" to managedIndex.indexUuid, - "policy_id" to managedIndex.policyID, - "enabled" to managedIndex.enabled.toString() - ) - if (showPolicy) { - managedIndex.policy?.let { appliedPolicies[managedIndex.index] = it } - } - if (validateAction) { - managedIndex.policy?.let { policiesforValidation[managedIndex.index] = it } - } + parseSearchHits(response.hits.hits).forEach { managedIndex -> + managedIndices.add(managedIndex.index) + enabledState[managedIndex.index] = managedIndex.enabled + managedIndicesMetaDataMap[managedIndex.index] = mapOf( + "index" to managedIndex.index, + "index_uuid" to managedIndex.indexUuid, + "policy_id" to managedIndex.policyID, + "enabled" to managedIndex.enabled.toString() + ) + if (showPolicy) { + managedIndex.policy?.let { appliedPolicies[managedIndex.index] = it } } - - // explain all only return managed indices - if (explainAll) { - if (managedIndices.size == 0) { - // edge case: if specify query param pagination size to be 0 - // we still show total managed indices - indexNames.clear() - sendResponse( - indexNames, indexMetadatas, indexPolicyIDs, enabledState, - totalManagedIndices, appliedPolicies, validationResults - ) - return - } else { - // Clear and add the managedIndices from the response to preserve the sort order and size - indexNames.clear() - indexNames.addAll(managedIndices) - // Remove entries in case they were limited due to request size - indexNamesToUUIDs.filterKeys { indexNames.contains(it) } - getMetadata(indexNames, threadContext) - return - } + if (validateAction) { + managedIndex.policy?.let { policiesforValidation[managedIndex.index] = it } } - - // explain/{index} return results for all indices - getMetadata(indexNames, threadContext) } - override fun onFailure(t: Exception) { - if (t is IndexNotFoundException) { - // config index hasn't been initialized - // show all requested indices not managed - if (!explainAll) { - getMetadata(indexNames, threadContext) - return - } + // explain all only return managed indices + if (explainAll) { + if (managedIndices.size == 0) { + // edge case: if specify query param pagination size to be 0 + // we still show total managed indices indexNames.clear() sendResponse( - indexNames, indexMetadatas, indexPolicyIDs, - enabledState, totalManagedIndices, appliedPolicies, validationResults + indexNames, indexMetadatas, indexPolicyIDs, enabledState, + totalManagedIndices, appliedPolicies, validationResults ) return + } else { + // Clear and add the managedIndices from the response to preserve the sort order and size + indexNames.clear() + indexNames.addAll(managedIndices) + // Remove entries in case they were limited due to request size + indexNamesToUUIDs.filterKeys { indexNames.contains(it) } + getMetadata(indexNames) + return } - actionListener.onFailure(ExceptionsHelper.unwrapCause(t) as Exception) } + + // explain/{index} return results for all indices + getMetadata(indexNames) } - ) - } + + override fun onFailure(t: Exception) { + if (t is IndexNotFoundException) { + // config index hasn't been initialized + // show all requested indices not managed + if (!explainAll) { + getMetadata(indexNames) + return + } + indexNames.clear() + sendResponse( + indexNames, indexMetadatas, indexPolicyIDs, + enabledState, totalManagedIndices, appliedPolicies, validationResults + ) + return + } + actionListener.onFailure(ExceptionsHelper.unwrapCause(t) as Exception) + } + } + ) } @Suppress("SpreadOperator") - fun getMetadata(indexNames: List, threadContext: ThreadContext.StoredContext) { + fun getMetadata(indexNames: List) { if (request.indexType == DEFAULT_INDEX_TYPE) { val clusterStateRequest = ClusterStateRequest() clusterStateRequest.clear() @@ -270,7 +271,7 @@ class TransportExplainAction @Inject constructor( object : ActionListener { override fun onResponse(response: ClusterStateResponse) { val clusterStateIndexMetadatas = response.state.metadata.indices - getMetadataMap(clusterStateIndexMetadatas, threadContext) + getMetadataMap(clusterStateIndexMetadatas) } override fun onFailure(t: Exception) { @@ -279,11 +280,11 @@ class TransportExplainAction @Inject constructor( } ) } else { - getMetadataMap(null, threadContext) + getMetadataMap(null) } } - private fun getMetadataMap(clusterStateIndexMetadatas: Map?, threadContext: ThreadContext.StoredContext) { + private fun getMetadataMap(clusterStateIndexMetadatas: Map?) { val mgetMetadataReq = MultiGetRequest() indexNamesToUUIDs.values.forEach { uuid -> mgetMetadataReq.add(MultiGetRequest.Item(INDEX_MANAGEMENT_INDEX, managedIndexMetadataID(uuid)).routing(uuid)) @@ -294,7 +295,7 @@ class TransportExplainAction @Inject constructor( override fun onResponse(response: MultiGetResponse) { val metadataMap: Map = response.responses.associate { it.id to getMetadata(it.response)?.toMap() } - buildResponse(indexNamesToUUIDs, metadataMap, clusterStateIndexMetadatas, threadContext) + buildResponse(indexNamesToUUIDs, metadataMap, clusterStateIndexMetadatas) } override fun onFailure(t: Exception) { @@ -308,8 +309,7 @@ class TransportExplainAction @Inject constructor( private fun buildResponse( indices: Map, metadataMap: Map, - clusterStateIndexMetadatas: Map?, - threadContext: ThreadContext.StoredContext + clusterStateIndexMetadatas: Map? ) { // cluster state response will not resist the sort order // so use the order from previous search result saved in indexNames @@ -361,12 +361,11 @@ class TransportExplainAction @Inject constructor( if (user == null || indexNames.isEmpty()) { sendResponse(indexNames, indexMetadatas, indexPolicyIDs, enabledState, totalManagedIndices, appliedPolicies, validationResults) } else { - filterAndSendResponse(threadContext) + filterAndSendResponse() } } - private fun filterAndSendResponse(threadContext: ThreadContext.StoredContext) { - threadContext.restore() + private fun filterAndSendResponse() { val filteredIndices = mutableListOf() val filteredMetadata = mutableListOf() val filteredValidationResult = mutableListOf() @@ -375,21 +374,24 @@ class TransportExplainAction @Inject constructor( val filteredAppliedPolicies = mutableMapOf() CoroutineScope(Dispatchers.IO).launch { - // filter out indicies for which user doesn't have manage index permissions - for (i in 0 until indexNames.count()) { - val request = ManagedIndexRequest().indices(indexNames[i]) - try { - client.suspendUntil { execute(ManagedIndexAction.INSTANCE, request, it) } - filteredIndices.add(indexNames[i]) - filteredMetadata.add(indexMetadatas[i]) - filteredPolicies.add(indexPolicyIDs[i]) - validationResults[i].let { filteredValidationResult.add(it) } - enabledState[indexNames[i]]?.let { enabledStatus[indexNames[i]] = it } - appliedPolicies[indexNames[i]]?.let { filteredAppliedPolicies[indexNames[i]] = it } - } catch (e: OpenSearchSecurityException) { - totalManagedIndices -= 1 - } catch (e: Exception) { - actionListener.onFailure(e) + val threadContext = client.threadPool().threadContext + withClosableContext(IndexManagementSecurityContext("ManagedIndexExplainHandler", settings, threadContext, user)) { + // filter out indicies for which user doesn't have manage index permissions + for (i in 0 until indexNames.count()) { + val request = ManagedIndexRequest().indices(indexNames[i]) + try { + client.suspendUntil { execute(ManagedIndexAction.INSTANCE, request, it) } + filteredIndices.add(indexNames[i]) + filteredMetadata.add(indexMetadatas[i]) + filteredPolicies.add(indexPolicyIDs[i]) + validationResults[i].let { filteredValidationResult.add(it) } + enabledState[indexNames[i]]?.let { enabledStatus[indexNames[i]] = it } + appliedPolicies[indexNames[i]]?.let { filteredAppliedPolicies[indexNames[i]] = it } + } catch (e: OpenSearchSecurityException) { + totalManagedIndices -= 1 + } catch (e: Exception) { + actionListener.onFailure(e) + } } } sendResponse( diff --git a/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementIndicesIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementIndicesIT.kt index 56a0cc0b8..8bb8a3665 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementIndicesIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/IndexManagementIndicesIT.kt @@ -8,8 +8,8 @@ package org.opensearch.indexmanagement import org.apache.hc.core5.http.ContentType import org.apache.hc.core5.http.io.entity.StringEntity import org.opensearch.common.settings.Settings -import org.opensearch.core.xcontent.ToXContent import org.opensearch.common.xcontent.XContentFactory +import org.opensearch.core.xcontent.ToXContent import org.opensearch.indexmanagement.IndexManagementIndices.Companion.HISTORY_INDEX_BASE import org.opensearch.indexmanagement.IndexManagementIndices.Companion.HISTORY_WRITE_INDEX_ALIAS import org.opensearch.indexmanagement.IndexManagementIndices.Companion.indexManagementMappings @@ -110,7 +110,7 @@ class IndexManagementIndicesIT : IndexStateManagementRestTestCase() { // wait for the policy to initialize which will add 1 history document to the history index // this should update the history mappings to the new version - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index)!!.policyID) } waitFor { assertIndexExists(HISTORY_WRITE_INDEX_ALIAS) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt index 4f6b67d74..f9e2be117 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/SecurityRestTestCase.kt @@ -26,6 +26,7 @@ import org.opensearch.indexmanagement.indexstatemanagement.IndexStateManagementR import org.opensearch.indexmanagement.indexstatemanagement.model.ManagedIndexConfig import org.opensearch.indexmanagement.indexstatemanagement.model.Policy import org.opensearch.indexmanagement.indexstatemanagement.resthandler.RestExplainAction +import org.opensearch.indexmanagement.indexstatemanagement.resthandler.RestExplainAction.Companion.EXPLAIN_BASE_URI import org.opensearch.indexmanagement.indexstatemanagement.settings.ManagedIndexSettings import org.opensearch.indexmanagement.indexstatemanagement.toJsonString import org.opensearch.indexmanagement.indexstatemanagement.util.INDEX_NUMBER_OF_REPLICAS @@ -105,7 +106,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { return super.createIndex(index, policyID, alias, replicas, shards, mapping, settings) } - fun getExplainManagedIndexMetaDataExt(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData { + fun getExplainManagedIndexMetaDataExt(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData? { return super.getExplainManagedIndexMetaData(indexName, userClient) } } @@ -214,6 +215,16 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { return IndexStateManagementRestTestCaseExt.createPolicyExt(policy, policyId, refresh, client) } + protected fun managedIndicesExplain( + indices: List, + client: RestClient + ): Map<*, *> { + + val request = Request("GET", "$EXPLAIN_BASE_URI") + request.addParameter("index", indices.joinToString(separator = ",")) + return entityAsMap(executeRequest(request, RestStatus.OK, client)) + } + protected fun managedIndexExplainAllAsMap( client: RestClient?, ): Map<*, *> { @@ -248,7 +259,7 @@ abstract class SecurityRestTestCase : IndexManagementRestTestCase() { executeRequest(request, expectedStatus, client) } - protected fun getExplainManagedIndexMetaData(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData { + protected fun getExplainManagedIndexMetaData(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData? { return IndexStateManagementRestTestCaseExt.getExplainManagedIndexMetaDataExt(indexName, userClient) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt index 3d2cd9948..b27e92e04 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/IndexStateManagementRestTestCase.kt @@ -5,9 +5,9 @@ package org.opensearch.indexmanagement.indexstatemanagement +import org.apache.hc.core5.http.ContentType import org.apache.hc.core5.http.HttpEntity import org.apache.hc.core5.http.HttpHeaders -import org.apache.hc.core5.http.ContentType import org.apache.hc.core5.http.io.entity.StringEntity import org.apache.hc.core5.http.message.BasicHeader import org.junit.After @@ -22,13 +22,13 @@ import org.opensearch.client.RestClient import org.opensearch.cluster.metadata.IndexMetadata import org.opensearch.common.settings.Settings import org.opensearch.common.unit.TimeValue -import org.opensearch.core.xcontent.DeprecationHandler import org.opensearch.common.xcontent.LoggingDeprecationHandler -import org.opensearch.core.xcontent.NamedXContentRegistry -import org.opensearch.core.xcontent.XContentParser.Token import org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken import org.opensearch.common.xcontent.XContentType import org.opensearch.common.xcontent.json.JsonXContent.jsonXContent +import org.opensearch.core.xcontent.DeprecationHandler +import org.opensearch.core.xcontent.NamedXContentRegistry +import org.opensearch.core.xcontent.XContentParser.Token import org.opensearch.index.seqno.SequenceNumbers import org.opensearch.indexmanagement.IndexManagementIndices import org.opensearch.indexmanagement.IndexManagementPlugin @@ -620,7 +620,7 @@ abstract class IndexStateManagementRestTestCase : IndexManagementRestTestCase() // Calls explain API for a single concrete index and converts the response into a ManagedIndexMetaData // This only works for indices with a ManagedIndexMetaData that has been initialized @Suppress("LoopWithTooManyJumpStatements") - protected fun getExplainManagedIndexMetaData(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData { + protected fun getExplainManagedIndexMetaData(indexName: String, userClient: RestClient? = null): ManagedIndexMetaData? { if (indexName.contains("*") || indexName.contains(",")) { throw IllegalArgumentException("This method is only for a single concrete index") } @@ -633,8 +633,13 @@ abstract class IndexStateManagementRestTestCase : IndexManagementRestTestCase() while (xcp.nextToken() != Token.END_OBJECT) { val cn = xcp.currentName() xcp.nextToken() - if (cn == "total_managed_indices") continue - + if (cn == "total_managed_indices") { + if (xcp.text() == "0") { + return null + } else { + continue + } + } metadata = ManagedIndexMetaData.parse(xcp) break // bypass roles field } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionRetryIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionRetryIT.kt index dfc1a9b45..90989fdc2 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionRetryIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionRetryIT.kt @@ -44,7 +44,7 @@ class ActionRetryIT : IndexStateManagementRestTestCase() { // First execution. We need to initialize the policy. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Second execution is to fail the step once. updateManagedIndexConfigStartTime(managedIndexConfig) @@ -53,7 +53,7 @@ class ActionRetryIT : IndexStateManagementRestTestCase() { val managedIndexMetaData = getExplainManagedIndexMetaData(indexName) assertEquals( ActionMetaData( - "rollover", managedIndexMetaData.actionMetaData?.startTime, 0, false, 1, + "rollover", managedIndexMetaData!!.actionMetaData?.startTime, 0, false, 1, managedIndexMetaData.actionMetaData?.lastRetryTime, null ), managedIndexMetaData.actionMetaData @@ -69,7 +69,7 @@ class ActionRetryIT : IndexStateManagementRestTestCase() { val managedIndexMetaData = getExplainManagedIndexMetaData(indexName) assertEquals( ActionMetaData( - "rollover", managedIndexMetaData.actionMetaData?.startTime, 0, false, 2, + "rollover", managedIndexMetaData!!.actionMetaData?.startTime, 0, false, 2, managedIndexMetaData.actionMetaData?.lastRetryTime, null ), managedIndexMetaData.actionMetaData @@ -85,7 +85,7 @@ class ActionRetryIT : IndexStateManagementRestTestCase() { val managedIndexMetaData = getExplainManagedIndexMetaData(indexName) assertEquals( ActionMetaData( - "rollover", managedIndexMetaData.actionMetaData?.startTime, 0, true, 2, + "rollover", managedIndexMetaData!!.actionMetaData?.startTime, 0, true, 2, managedIndexMetaData.actionMetaData?.lastRetryTime, null ), managedIndexMetaData.actionMetaData @@ -119,11 +119,11 @@ class ActionRetryIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // First execution. We need to initialize the policy. - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Second execution is to fail the step once. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(1, getExplainManagedIndexMetaData(indexName).actionMetaData?.consumedRetries) } + waitFor { assertEquals(1, getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.consumedRetries) } // Third execution should not run job since we have the retry backoff. updateManagedIndexConfigStartTime(managedIndexConfig) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionTimeoutIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionTimeoutIT.kt index 551132009..5f6450e12 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionTimeoutIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionTimeoutIT.kt @@ -35,14 +35,14 @@ class ActionTimeoutIT : IndexStateManagementRestTestCase() { // First execution. We need to initialize the policy. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // the second execution we move into rollover action, we won't hit the timeout as this is the execution that sets the startTime updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { assertEquals( "Should be attempting to rollover", - getExplainManagedIndexMetaData(indexName).info?.get("message"), + getExplainManagedIndexMetaData(indexName)!!.info?.get("message"), AttemptRolloverStep.getPendingMessage(indexName) ) } @@ -88,7 +88,7 @@ class ActionTimeoutIT : IndexStateManagementRestTestCase() { // First execution. We need to initialize the policy. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // the second execution we move into open action, we won't hit the timeout as this is the execution that sets the startTime updateManagedIndexConfigStartTime(managedIndexConfig) @@ -111,7 +111,7 @@ class ActionTimeoutIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( "Should be attempting to rollover", - getExplainManagedIndexMetaData(indexName).info?.get("message"), + getExplainManagedIndexMetaData(indexName)!!.info?.get("message"), AttemptRolloverStep.getPendingMessage(indexName) ) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasActionIT.kt index 0ce641fbd..bfda77d8f 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AliasActionIT.kt @@ -43,7 +43,7 @@ class AliasActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } waitFor { val alias = getAlias(indexName, "") @@ -55,7 +55,7 @@ class AliasActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(indexName).info as Map + val info = getExplainManagedIndexMetaData(indexName)!!.info as Map assertEquals("Alias was not successfully updated", AttemptAliasActionsStep.getSuccessMessage(indexName), info["message"]) val alias = getAlias(indexName, "") assertTrue("Alias was not added to index", alias.containsKey(aliasName)) @@ -86,7 +86,7 @@ class AliasActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } waitFor { val alias = getAlias(indexName, "") @@ -98,7 +98,7 @@ class AliasActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(indexName).info as Map + val info = getExplainManagedIndexMetaData(indexName)!!.info as Map assertEquals("Alias was not successfully updated", AttemptAliasActionsStep.getSuccessMessage(indexName), info["message"]) val alias = getAlias(indexName, "") assertTrue("Alias was not added to index", alias.containsKey(aliasName)) @@ -129,7 +129,7 @@ class AliasActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } waitFor { val alias = getAlias(indexName, "") @@ -141,7 +141,7 @@ class AliasActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(indexName).info as Map + val info = getExplainManagedIndexMetaData(indexName)!!.info as Map assertEquals("Alias was not successfully updated", AttemptAliasActionsStep.getSuccessMessage(indexName), info["message"]) val alias = getAlias(indexName, "") assertTrue("Alias was not removed from index", !alias.containsKey(aliasName)) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionIT.kt index 82b8daddf..8cec969fa 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/AllocationActionIT.kt @@ -43,7 +43,7 @@ class AllocationActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -88,7 +88,7 @@ class AllocationActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -139,7 +139,7 @@ class AllocationActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -191,7 +191,7 @@ class AllocationActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -235,14 +235,14 @@ class AllocationActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - assertEquals(AttemptAllocationStep.getFailedMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) + assertEquals(AttemptAllocationStep.getFailedMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionIT.kt index 1a2760cce..e83beec3f 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/CloseActionIT.kt @@ -44,7 +44,7 @@ class CloseActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -80,7 +80,7 @@ class CloseActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -115,7 +115,7 @@ class CloseActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds and init policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so the job will trigger in 2 seconds and close the index updateManagedIndexConfigStartTime(managedIndexConfig) @@ -125,11 +125,11 @@ class CloseActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds and attempt transitions updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(secondState.name, getExplainManagedIndexMetaData(indexName).transitionTo) } + waitFor { assertEquals(secondState.name, getExplainManagedIndexMetaData(indexName)!!.transitionTo) } // Change the start time so the job will trigger in 2 seconds and transition to next state (which should complete policy) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(true, getExplainManagedIndexMetaData(indexName).policyCompleted) } + waitFor { assertEquals(true, getExplainManagedIndexMetaData(indexName)!!.policyCompleted) } } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionIT.kt index 163e862e2..ddd975897 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/DeleteActionIT.kt @@ -43,7 +43,7 @@ class DeleteActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionIT.kt index fca73466a..bfed7867e 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ForceMergeActionIT.kt @@ -54,7 +54,7 @@ class ForceMergeActionIT : IndexStateManagementRestTestCase() { // First execution: Policy is initialized updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Second execution: Index is set to read-only for force_merge updateManagedIndexConfigStartTime(managedIndexConfig) @@ -69,7 +69,7 @@ class ForceMergeActionIT : IndexStateManagementRestTestCase() { assertEquals( "maxNumSegments not set in ActionProperties", forceMergeActionConfig.maxNumSegments, - getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties?.maxNumSegments + getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties?.maxNumSegments ) } @@ -78,7 +78,7 @@ class ForceMergeActionIT : IndexStateManagementRestTestCase() { waitFor { assertTrue("Segment count for [$indexName] after force merge is incorrect", validateSegmentCount(indexName, min = 1, max = 1)) } // verify we reset actionproperties at end of forcemerge - waitFor { assertNull("maxNumSegments was not reset", getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties) } + waitFor { assertNull("maxNumSegments was not reset", getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties) } // index should still be readonly after force merge finishes waitFor { assertEquals("true", getIndexBlocksWriteSetting(indexName)) } } @@ -118,24 +118,24 @@ class ForceMergeActionIT : IndexStateManagementRestTestCase() { // First execution: Policy is initialized updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Second execution: Index was already read-only and should remain so for force_merge updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptSetReadOnlyStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptSetReadOnlyStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } waitFor { assertEquals("true", getIndexBlocksWriteSetting(indexName)) } // Third execution: Force merge operation is kicked off updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptCallForceMergeStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptCallForceMergeStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // Fourth execution: Waits for force merge to complete, which will happen in this execution since index is small updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(WaitForForceMergeStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(WaitForForceMergeStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } assertTrue("Segment count for [$indexName] after force merge is incorrect", validateSegmentCount(indexName, min = 1, max = 1)) assertEquals("true", getIndexBlocksWriteSetting(indexName)) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionIT.kt index c77b5e8ad..a14a24e91 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexPriorityActionIT.kt @@ -41,7 +41,7 @@ class IndexPriorityActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // ism policy initialized - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // change the runJob start time to change index priority updateManagedIndexConfigStartTime(managedIndexConfig) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexStateManagementHistoryIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexStateManagementHistoryIT.kt index d46d5318a..57df1a797 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexStateManagementHistoryIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/IndexStateManagementHistoryIT.kt @@ -54,7 +54,7 @@ class IndexStateManagementHistoryIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -121,7 +121,7 @@ class IndexStateManagementHistoryIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -188,7 +188,7 @@ class IndexStateManagementHistoryIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -422,7 +422,7 @@ class IndexStateManagementHistoryIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionIT.kt index 6790d2ed6..ead716d5a 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/NotificationActionIT.kt @@ -70,7 +70,7 @@ class NotificationActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // verify index does not have any docs assertEquals( diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionIT.kt index d253806ba..ca7c532c0 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/OpenActionIT.kt @@ -45,7 +45,7 @@ class OpenActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. @@ -81,7 +81,7 @@ class OpenActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionIT.kt index 8ecf52aeb..a6ca642ce 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadOnlyActionIT.kt @@ -43,7 +43,7 @@ class ReadOnlyActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionIT.kt index e52786314..571e6c300 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReadWriteActionIT.kt @@ -53,7 +53,7 @@ class ReadWriteActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionIT.kt index f88a094b8..b82f25cf4 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ReplicaCountActionIT.kt @@ -44,7 +44,7 @@ class ReplicaCountActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action which // should set the replica count to the desired number diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionIT.kt index 4c2822601..1b6efadec 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RolloverActionIT.kt @@ -62,12 +62,12 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals("Index did not rollover.", AttemptRolloverStep.getSuccessMessage(firstIndex), info["message"]) assertNull("Should not have conditions if none specified", info["conditions"]) } @@ -115,12 +115,12 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals("Index did not rollover.", AttemptRolloverStep.getSuccessMessage(firstIndex), info["message"]) assertNull("Should not have conditions if none specified", info["conditions"]) } @@ -153,12 +153,12 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals( "Index rollover before it met the condition.", AttemptRolloverStep.getPendingMessage(firstIndex), info["message"] @@ -181,7 +181,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals("Index did not rollover", AttemptRolloverStep.getSuccessMessage(firstIndex), info["message"]) val conditions = info["conditions"] as Map assertEquals( @@ -232,7 +232,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // assuming our ingestion is randomly split between the 20 primary shards // then 250kb/20 gives around 12.5kb per primary shard which is below our 100kb condition @@ -255,7 +255,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Confirm index is waiting to meet the rollover condition updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals( "Index rollover before it met the condition.", AttemptRolloverStep.getPendingMessage(firstIndex), info["message"] @@ -295,7 +295,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Speed up to third execution updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals("Index did not rollover", AttemptRolloverStep.getSuccessMessage(firstIndex), info["message"]) val conditions = info["conditions"] as Map assertEquals( @@ -335,12 +335,12 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals( "Index rollover before it met the condition.", AttemptRolloverStep.getPendingMessage(firstIndex), info["message"] @@ -363,7 +363,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map assertEquals("Index did not rollover", AttemptRolloverStep.getSuccessMessage(firstIndex), info["message"]) val conditions = info["conditions"] as Map assertEquals( @@ -413,12 +413,12 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(index1).info as Map + val info = getExplainManagedIndexMetaData(index1)!!.info as Map assertEquals( "Index rollover not stopped by pre-check.", AttemptRolloverStep.getFailedPreCheckMessage(index1), info["message"] @@ -435,7 +435,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(index1).info as Map + val info = getExplainManagedIndexMetaData(index1)!!.info as Map assertEquals( "Index rollover not skip.", AttemptRolloverStep.getSkipRolloverMessage(index1), info["message"] @@ -475,12 +475,12 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so that the job will trigger in 2 seconds. This will trigger the first initialization of the policy. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndexName)!!.policyID) } // Speed up to the second execution of the policy where it will trigger the first execution of the action. updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndexName).info as Map + val info = getExplainManagedIndexMetaData(firstIndexName)!!.info as Map assertEquals( "Data stream did not rollover.", AttemptRolloverStep.getSuccessDataStreamRolloverMessage(dataStreamName, firstIndexName), @@ -495,7 +495,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Ensure that that policy is applied to the newly created index as well. managedIndexConfig = getExistingManagedIndexConfig(secondIndexName) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(secondIndexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(secondIndexName)!!.policyID) } } @Suppress("UNCHECKED_CAST") @@ -531,13 +531,13 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so that the job will trigger in 2 seconds. This will trigger the first initialization of the policy. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndexName)!!.policyID) } // Speed up to the second execution of the policy where it will trigger the first execution of the action. // Rollover shouldn't have happened yet as the conditions aren't met. updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndexName).info as Map + val info = getExplainManagedIndexMetaData(firstIndexName)!!.info as Map assertEquals( "Index rollover before it met the condition.", AttemptRolloverStep.getPendingMessage(firstIndexName), @@ -565,7 +565,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Rollover should have happened as the conditions were met. updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndexName).info as Map + val info = getExplainManagedIndexMetaData(firstIndexName)!!.info as Map assertEquals( "Data stream did not rollover", AttemptRolloverStep.getSuccessDataStreamRolloverMessage(dataStreamName, firstIndexName), @@ -617,7 +617,7 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // Rollover the alias manually before ISM tries to roll it over rolloverIndex(aliasName) @@ -625,8 +625,8 @@ class RolloverActionIT : IndexStateManagementRestTestCase() { // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - val info = getExplainManagedIndexMetaData(firstIndex).info as Map - val stepMetadata = getExplainManagedIndexMetaData(firstIndex).stepMetaData + val info = getExplainManagedIndexMetaData(firstIndex)!!.info as Map + val stepMetadata = getExplainManagedIndexMetaData(firstIndex)!!.stepMetaData assertEquals("Index should succeed if already rolled over.", AttemptRolloverStep.getAlreadyRolledOverMessage(firstIndex, aliasName), info["message"]) assertEquals("Index should succeed if already rolled over.", Step.StepStatus.COMPLETED, stepMetadata?.stepStatus) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionIT.kt index 2a7238f16..4e0822bd7 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/RollupActionIT.kt @@ -261,14 +261,14 @@ class RollupActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will initialize the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so we attempt to create rollup step will execute updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { assertEquals( AttemptCreateRollupJobStep.getSuccessMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -279,7 +279,7 @@ class RollupActionIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( WaitForRollupCompletionStep.getJobFailedMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } } @@ -330,14 +330,14 @@ class RollupActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will initialize the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so we attempt to create rollup step will execute updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { assertEquals( AttemptCreateRollupJobStep.getFailedMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } } @@ -379,14 +379,14 @@ class RollupActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will initialize the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so we attempt to create rollup step will execute updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { assertEquals( AttemptCreateRollupJobStep.getSuccessMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -395,7 +395,7 @@ class RollupActionIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( WaitForRollupCompletionStep.getJobProcessingMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -405,7 +405,7 @@ class RollupActionIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( WaitForRollupCompletionStep.getJobFailedMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } } @@ -416,14 +416,14 @@ class RollupActionIT : IndexStateManagementRestTestCase() { // Change the start time so that the policy will be initialized. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyId, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyId, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so that the rollup action will be attempted. updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { assertEquals( AttemptCreateRollupJobStep.getSuccessMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -434,7 +434,7 @@ class RollupActionIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( WaitForRollupCompletionStep.getJobCompletionMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionIT.kt index 3e2be695c..13f2e7d2e 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ShrinkActionIT.kt @@ -102,32 +102,32 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { val managedIndexConfig = getExistingManagedIndexConfig(indexName) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } logger.info("before attempt move shards") // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) val targetIndexName = indexName + testIndexSuffix waitFor(Instant.ofEpochSecond(60)) { - assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) + assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) assertEquals("true", getIndexBlocksWriteSetting(indexName)) - assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) + assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) val settings = getFlatSettings(indexName) - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeToShrink, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName // starts WaitForMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { assertEquals( WaitForMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } // Wait for move should finish before this. Starts AttemptShrinkStep @@ -135,10 +135,10 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { val instant: Instant = Instant.ofEpochSecond(50) waitFor(instant) { assertTrue("Target index is not created", indexExists(targetIndexName)) - assertEquals(Step.StepStatus.COMPLETED, getExplainManagedIndexMetaData(indexName).stepMetaData?.stepStatus) + assertEquals(Step.StepStatus.COMPLETED, getExplainManagedIndexMetaData(indexName)!!.stepMetaData?.stepStatus) assertEquals( AttemptShrinkStep.getSuccessMessage(targetIndexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -149,7 +149,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue(getIndexShards(targetIndexName).size == 2) assertEquals( WaitForShrinkStep.SUCCESS_MESSAGE, - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) assertEquals("Write block setting was not reset after successful shrink", "true", getIndexBlocksWriteSetting(indexName)) val aliases = getAlias(targetIndexName, "") @@ -194,32 +194,32 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { val managedIndexConfig = getExistingManagedIndexConfig(indexName) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } logger.info("before attempt move shards") // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) val targetIndexName = indexName + testIndexSuffix waitFor(Instant.ofEpochSecond(60)) { - assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) + assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) assertEquals("true", getIndexBlocksWriteSetting(indexName)) - assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) + assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) val settings = getFlatSettings(indexName) - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeToShrink, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName // starts WaitForMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { assertEquals( WaitForMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } // Wait for move should finish before this. Starts AttemptShrinkStep @@ -228,7 +228,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue("Target index is not created", indexExists(targetIndexName)) assertEquals( AttemptShrinkStep.getSuccessMessage(targetIndexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -239,7 +239,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue(getIndexShards(targetIndexName).size == 2) assertEquals( WaitForShrinkStep.SUCCESS_MESSAGE, - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) val indexSettings = getIndexSettings(indexName) as Map>> val writeBlock = indexSettings[indexName]!!["settings"]!![IndexMetadata.SETTING_BLOCKS_WRITE] as String? @@ -284,33 +284,33 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { val managedIndexConfig = getExistingManagedIndexConfig(indexName) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) val targetIndexName = indexName + testIndexSuffix waitFor(Instant.ofEpochSecond(60)) { - assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) + assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) assertEquals("true", getIndexBlocksWriteSetting(indexName)) - assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) + assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) val settings = getFlatSettings(indexName) - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeToShrink, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName // starts WaitForMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { assertEquals( WaitForMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } // Wait for move should finish before this. Starts AttemptShrinkStep @@ -319,7 +319,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue("Target index is not created", indexExists(targetIndexName)) assertEquals( AttemptShrinkStep.getSuccessMessage(targetIndexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -330,7 +330,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue(getIndexShards(targetIndexName).size == 2) assertEquals( WaitForShrinkStep.SUCCESS_MESSAGE, - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) val indexSettings = getIndexSettings(indexName) as Map>> val writeBlock = indexSettings[indexName]!!["settings"]!![IndexMetadata.SETTING_BLOCKS_WRITE] as String? @@ -380,40 +380,40 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { logger.info("index settings: \n ${getFlatSettings(indexName)}") updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) val targetIndexName = indexName + testIndexSuffix waitFor(Instant.ofEpochSecond(60)) { assertEquals( targetIndexName, - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName ) assertEquals("true", getIndexBlocksWriteSetting(indexName)) val nodeName = - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertNotNull("Couldn't find node to shrink onto.", nodeName) assertNotEquals(nodeName, excludedNode) val settings = getFlatSettings(indexName) val nodeToShrink = - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeToShrink, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } val nodeToShrink = - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName // starts WaitForMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { assertEquals( WaitForMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } // Wait for move should finish before this. Starts AttemptShrinkStep @@ -422,7 +422,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue("Target index is not created", indexExists(targetIndexName)) assertEquals( AttemptShrinkStep.getSuccessMessage(targetIndexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -433,7 +433,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue(getIndexShards(targetIndexName).size == 2) assertEquals( WaitForShrinkStep.SUCCESS_MESSAGE, - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) val indexSettings = getIndexSettings(indexName) as Map>> val writeBlock = indexSettings[indexName]!!["settings"]!![IndexMetadata.SETTING_BLOCKS_WRITE] as String? @@ -479,7 +479,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { val managedIndexConfig = getExistingManagedIndexConfig(indexName) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } logger.info("before attempt move shards") // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) @@ -490,7 +490,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertEquals( "Did not get the no-op due to single primary shard message", AttemptMoveShardsStep.ONE_PRIMARY_SHARD_MESSAGE, - metadata.info?.get("message") + metadata!!.info?.get("message") ) assertEquals( "Was not on the last step after no-op due to single primary shard", @@ -536,37 +536,37 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { logger.info("index settings: \n ${getFlatSettings(indexName)}") updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) val targetIndexName = indexName + testIndexSuffix waitFor(Instant.ofEpochSecond(60)) { assertEquals( targetIndexName, - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName ) assertEquals("true", getIndexBlocksWriteSetting(indexName)) val nodeName = - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertNotNull("Couldn't find node to shrink onto.", nodeName) val settings = getFlatSettings(indexName) assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeName, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } val nodeToShrink = - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName // starts WaitForMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { assertEquals( WaitForMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } // Wait for move should finish before this. Starts AttemptShrinkStep @@ -575,7 +575,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue("Target index is not created", indexExists(targetIndexName)) assertEquals( AttemptShrinkStep.getSuccessMessage(targetIndexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -586,7 +586,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertTrue(getIndexShards(targetIndexName).size == 2) assertEquals( WaitForShrinkStep.SUCCESS_MESSAGE, - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) val indexSettings = getIndexSettings(indexName) as Map>> val writeBlock = indexSettings[indexName]!!["settings"]!![IndexMetadata.SETTING_BLOCKS_WRITE] as String? @@ -613,32 +613,32 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { // First execution: Policy is initialized val managedIndexConfig = getExistingManagedIndexConfig(indexName) updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor(Instant.ofEpochSecond(60)) { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } logger.info("before attempt move shards") // Starts AttemptMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) val targetIndexName = indexName + "_shrink_test" waitFor(Instant.ofEpochSecond(60)) { - assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) - assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) + assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) + assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) val settings = getFlatSettings(indexName) - val nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + val nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertTrue("Did not set allocation setting", settings.containsKey("index.routing.allocation.require._name")) assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeToShrink, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } - var nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + var nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName // starts WaitForMoveShardsStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { assertEquals( WaitForMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } // Create an index with the target index name so the AttemptShrinkStep fails @@ -647,7 +647,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { // Wait for move should finish before this. Starts AttemptShrinkStep updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { - val stepMetadata = getExplainManagedIndexMetaData(indexName).stepMetaData + val stepMetadata = getExplainManagedIndexMetaData(indexName)!!.stepMetaData assertEquals("Did not fail due to target index existing step as expected", Step.StepStatus.FAILED, stepMetadata?.stepStatus) assertEquals(AttemptShrinkStep.name, stepMetadata?.name) val settings = getFlatSettings(indexName) @@ -655,7 +655,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { assertFalse("Did not clear index write block setting.", settings.containsKey("index.blocks.writes")) assertNull( "Did not clear shrink action properties", - getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties + getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties ) } @@ -667,7 +667,7 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) waitFor(Instant.ofEpochSecond(60)) { - val stepMetadata = getExplainManagedIndexMetaData(indexName).stepMetaData + val stepMetadata = getExplainManagedIndexMetaData(indexName)!!.stepMetaData assertEquals("Shrink action should have started over after failing", stepMetadata?.name, AttemptMoveShardsStep.name) // The step status should be starting, but in the same execution will be completed. Allowing either to avoid flaky failures val stepStatusDidReset = stepMetadata?.stepStatus == Step.StepStatus.STARTING || stepMetadata?.stepStatus == Step.StepStatus.COMPLETED @@ -675,16 +675,16 @@ class ShrinkActionIT : IndexStateManagementRestTestCase() { } waitFor { - assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) - assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) + assertEquals(targetIndexName, getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.targetIndexName) + assertNotNull("Couldn't find node to shrink onto.", getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName) val settings = getFlatSettings(indexName) - nodeToShrink = getExplainManagedIndexMetaData(indexName).actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName + nodeToShrink = getExplainManagedIndexMetaData(indexName)!!.actionMetaData!!.actionProperties!!.shrinkActionProperties!!.nodeName assertTrue("Did not set allocation setting", settings.containsKey("index.routing.allocation.require._name")) assertTrue(settings.containsKey("index.routing.allocation.require._name")) assertEquals(nodeToShrink, settings["index.routing.allocation.require._name"]) assertEquals( AttemptMoveShardsStep.getSuccessMessage(nodeToShrink), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionIT.kt index 555f8610e..1eebe76a1 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/SnapshotActionIT.kt @@ -50,7 +50,7 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles for wait for snapshot step updateManagedIndexConfigStartTime(managedIndexConfig) @@ -87,7 +87,7 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles for wait for snapshot step updateManagedIndexConfigStartTime(managedIndexConfig) @@ -124,7 +124,7 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles for wait for snapshot step updateManagedIndexConfigStartTime(managedIndexConfig) @@ -161,20 +161,20 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will initialize the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so attempt snapshot step with execute updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // Change the start time so wait for snapshot step will execute updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(WaitForSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(WaitForSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // verify we set snapshotName in action properties waitFor { assert( - getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties?.snapshotName?.contains(snapshot) == true + getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties?.snapshotName?.contains(snapshot) == true ) } @@ -210,20 +210,20 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will initialize the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so attempt snapshot step with execute updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // Change the start time so wait for snapshot step will execute updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(WaitForSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(WaitForSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // verify we set snapshotName in action properties waitFor { assert( - getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties?.snapshotName?.contains(snapshot) == true + getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties?.snapshotName?.contains(snapshot) == true ) } @@ -259,26 +259,26 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will initialize the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so attempt snapshot step with execute updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptSnapshotStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // Confirm successful snapshot creation waitFor { assertSnapshotExists(repository, snapshot) } waitFor { assertSnapshotFinishedWithSuccess(repository, snapshot) } // Delete the snapshot so wait for step will fail with missing snapshot exception - val snapshotName = getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties?.snapshotName + val snapshotName = getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties?.snapshotName assertNotNull("Snapshot name is null", snapshotName) deleteSnapshot(repository, snapshotName!!) // Change the start time so wait for snapshot step will execute where we should see a missing snapshot exception updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - assertEquals(WaitForSnapshotStep.getFailedMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) - assertEquals("[$repository:$snapshotName] is missing", getExplainManagedIndexMetaData(indexName).info?.get("cause")) + assertEquals(WaitForSnapshotStep.getFailedMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) + assertEquals("[$repository:$snapshotName] is missing", getExplainManagedIndexMetaData(indexName)!!.info?.get("cause")) } } @@ -313,12 +313,12 @@ class SnapshotActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - assertEquals(AttemptSnapshotStep.getBlockedMessage(denyList, repository, indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) + assertEquals(AttemptSnapshotStep.getBlockedMessage(denyList, repository, indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionActionIT.kt index 05fb85954..9351a5849 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/TransitionActionIT.kt @@ -49,13 +49,13 @@ class TransitionActionIT : IndexStateManagementRestTestCase() { // Initializing the policy/metadata updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Evaluating transition conditions for first time updateManagedIndexConfigStartTime(managedIndexConfig) // Should not have evaluated to true - waitFor { assertEquals(AttemptTransitionStep.getEvaluatingMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptTransitionStep.getEvaluatingMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // Add 6 documents (>5) insertSampleData(indexName, 6) @@ -64,7 +64,7 @@ class TransitionActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // Should have evaluated to true - waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, secondStateName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, secondStateName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } } fun `test rollover age transition for index with no rollover fails`() { @@ -94,13 +94,13 @@ class TransitionActionIT : IndexStateManagementRestTestCase() { // Initializing the policy/metadata updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Evaluating transition conditions for first time updateManagedIndexConfigStartTime(managedIndexConfig) // Should fail because it attempted to use the rollover age and the index has not been rolled over - waitFor { assertEquals(AttemptTransitionStep.getFailedRolloverDateMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptTransitionStep.getFailedRolloverDateMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } } fun `test rollover age transition for index`() { @@ -131,7 +131,7 @@ class TransitionActionIT : IndexStateManagementRestTestCase() { // Initializing the policy/metadata updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Rollover the index rolloverIndex(alias) @@ -140,6 +140,6 @@ class TransitionActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // Should have evaluated to true - waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, secondStateName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, secondStateName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/coordinator/ManagedIndexCoordinatorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/coordinator/ManagedIndexCoordinatorIT.kt index b78a827f9..86fa34576 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/coordinator/ManagedIndexCoordinatorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/coordinator/ManagedIndexCoordinatorIT.kt @@ -160,10 +160,10 @@ class ManagedIndexCoordinatorIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds and init policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Expect the Explain API to show an initialized ManagedIndexMetaData with the default state from the policy - waitFor { assertEquals(policy.defaultState, getExplainManagedIndexMetaData(indexName).stateMetaData?.name) } + waitFor { assertEquals(policy.defaultState, getExplainManagedIndexMetaData(indexName)!!.stateMetaData?.name) } // Disable Index State Management updateClusterSetting(ManagedIndexSettings.INDEX_STATE_MANAGEMENT_ENABLED.key, "false") @@ -211,7 +211,7 @@ class ManagedIndexCoordinatorIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( AttemptRolloverStep.getSuccessMessage(indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } } @@ -260,10 +260,10 @@ class ManagedIndexCoordinatorIT : IndexStateManagementRestTestCase() { // Will change the startTime each execution so that it triggers in 2 seconds // First execution: Policy is initialized updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Expect the Explain API to show an initialized ManagedIndexMetaData with the default state from the policy - waitFor { assertEquals(policy.defaultState, getExplainManagedIndexMetaData(indexName).stateMetaData?.name) } + waitFor { assertEquals(policy.defaultState, getExplainManagedIndexMetaData(indexName)!!.stateMetaData?.name) } // Second execution: Index is set to read-only for force_merge updateManagedIndexConfigStartTime(managedIndexConfig) @@ -278,7 +278,7 @@ class ManagedIndexCoordinatorIT : IndexStateManagementRestTestCase() { assertEquals( "maxNumSegments not set in ActionProperties", forceMergeActionConfig.maxNumSegments, - getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties?.maxNumSegments + getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties?.maxNumSegments ) } @@ -292,7 +292,7 @@ class ManagedIndexCoordinatorIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( WaitForForceMergeStep.getSuccessMessage(indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -312,7 +312,7 @@ class ManagedIndexCoordinatorIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( WaitForForceMergeStep.getSuccessMessage(indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyActionIT.kt index e225d559b..65a912685 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestChangePolicyActionIT.kt @@ -436,13 +436,13 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { // speed up to first execution where we initialize the policy on the job updateManagedIndexConfigStartTime(firstManagedIndexConfig) - waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(firstIndex).policyID) } + waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(firstIndex)!!.policyID) } // speed up to second execution where we attempt transition which should succeed // and transitionTo should be set updateManagedIndexConfigStartTime(firstManagedIndexConfig) - waitFor { assertEquals(secondState.name, getExplainManagedIndexMetaData(firstIndex).transitionTo) } + waitFor { assertEquals(secondState.name, getExplainManagedIndexMetaData(firstIndex)!!.transitionTo) } // speed up to third execution where we transition to second state updateManagedIndexConfigStartTime(firstManagedIndexConfig) @@ -452,7 +452,7 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { // getExplainManagedIndexMetaData(firstIndex).let { // assertEquals(it.copy(stateMetaData = it.stateMetaData?.copy(name = secondState.name)), it) // } - assertEquals(secondState.name, getExplainManagedIndexMetaData(firstIndex).stateMetaData?.name) + assertEquals(secondState.name, getExplainManagedIndexMetaData(firstIndex)!!.stateMetaData?.name) logger.info("Explain firstIndex before change policy: ${getExplainManagedIndexMetaData(firstIndex)}") } logger.info("time after check") @@ -465,7 +465,7 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { // speed up to first execution where we initialize the policy on the job updateManagedIndexConfigStartTime(secondManagedIndexConfig) - waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(secondIndex).policyID) } + waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(secondIndex)!!.policyID) } val newPolicy = createRandomPolicy() val changePolicy = ChangePolicy(newPolicy.id, null, listOf(StateFilter(state = firstState.name)), false) @@ -562,10 +562,10 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds and init policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(index).policyID) } + waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(index)!!.policyID) } // We should expect the explain API to show an initialized ManagedIndexMetaData with the default state from the initial policy - waitFor { assertEquals(policy.defaultState, getExplainManagedIndexMetaData(indexName).stateMetaData?.name) } + waitFor { assertEquals(policy.defaultState, getExplainManagedIndexMetaData(indexName)!!.stateMetaData?.name) } // add 10 documents which is not enough to trigger the 100 million rollover condition insertSampleData(indexName, docCount = 10) @@ -574,10 +574,10 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // verify we are in rollover and have not completed it yet waitFor { - assertEquals(RolloverAction.name, getExplainManagedIndexMetaData(indexName).actionMetaData?.name) + assertEquals(RolloverAction.name, getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.name) assertEquals( AttemptRolloverStep.getPendingMessage(indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -609,7 +609,7 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { waitFor { assertNull(getManagedIndexConfigByDocId(managedIndexConfig.id)?.changePolicy) assertEquals(newPolicy.id, getManagedIndexConfigByDocId(managedIndexConfig.id)?.policyID) - assertEquals(newPolicy.id, getExplainManagedIndexMetaData(indexName).policyID) + assertEquals(newPolicy.id, getExplainManagedIndexMetaData(indexName)!!.policyID) } // speed up to next execution where we should now execute with the updated policy @@ -619,7 +619,7 @@ class RestChangePolicyActionIT : IndexStateManagementRestTestCase() { waitFor { assertEquals( AttemptRolloverStep.getSuccessMessage(indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexActionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexActionIT.kt index c1b385030..cdb065e00 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexActionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/resthandler/RestRetryFailedManagedIndexActionIT.kt @@ -227,12 +227,12 @@ class RestRetryFailedManagedIndexActionIT : IndexStateManagementRestTestCase() { val managedIndexConfig = getExistingManagedIndexConfig(indexName) // change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(invalidPolicy.id, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(invalidPolicy.id, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so we attempt allocation that is intended to fail updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { - assertEquals(Step.StepStatus.FAILED, getExplainManagedIndexMetaData(indexName).stepMetaData?.stepStatus) + assertEquals(Step.StepStatus.FAILED, getExplainManagedIndexMetaData(indexName)!!.stepMetaData?.stepStatus) } waitFor { @@ -266,7 +266,7 @@ class RestRetryFailedManagedIndexActionIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // verify we have policy - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // speed up to execute set read only force merge step updateManagedIndexConfigStartTime(managedIndexConfig) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/runner/ManagedIndexRunnerIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/runner/ManagedIndexRunnerIT.kt index 38d013232..5a105d6c6 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/runner/ManagedIndexRunnerIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/runner/ManagedIndexRunnerIT.kt @@ -54,7 +54,7 @@ class ManagedIndexRunnerIT : IndexStateManagementRestTestCase() { // init policy on managed index updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policy.id, getExplainManagedIndexMetaData(indexName)!!.policyID) } // change policy seqNo on managed index updateManagedIndexConfigPolicySeqNo(managedIndexConfig.copy(policySeqNo = 17)) @@ -150,23 +150,23 @@ class ManagedIndexRunnerIT : IndexStateManagementRestTestCase() { // init policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(createdPolicy.id, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(createdPolicy.id, getExplainManagedIndexMetaData(indexName)!!.policyID) } // speed up to first execution that should set index to read only updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(SetReadOnlyStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(SetReadOnlyStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // speed up to second execution that should transition to second_state updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, secondState.name), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, secondState.name), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // speed up to third execution that should set index back to read write updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(SetReadWriteStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(SetReadWriteStep.getSuccessMessage(indexName), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // speed up to fourth execution that should transition to first_state updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, firstState.name), getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals(AttemptTransitionStep.getSuccessMessage(indexName, firstState.name), getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } // remove read_only from the allowlist val allowedActions = ISMActionsParser.instance.parsers.map { it.getActionType() }.toList() @@ -176,7 +176,7 @@ class ManagedIndexRunnerIT : IndexStateManagementRestTestCase() { // speed up to fifth execution that should try to set index to read only and fail because the action is not allowed updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals("Attempted to execute action=read_only which is not allowed.", getExplainManagedIndexMetaData(indexName).info?.get("message")) } + waitFor { assertEquals("Attempted to execute action=read_only which is not allowed.", getExplainManagedIndexMetaData(indexName)!!.info?.get("message")) } } fun `test jitter changing`() { diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateCloseIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateCloseIT.kt index 091d948de..6a2adb85d 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateCloseIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateCloseIT.kt @@ -46,7 +46,7 @@ class ValidateCloseIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateDeleteIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateDeleteIT.kt index 16e063270..203fa7f43 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateDeleteIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateDeleteIT.kt @@ -49,7 +49,7 @@ class ValidateDeleteIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1)!!.policyID) } // waitFor { assertIndexExists(index1) } // Need to speed up to second execution where it will trigger the first execution of the action diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateForceMergeIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateForceMergeIT.kt index b44ad9ac3..14ba00ec1 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateForceMergeIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateForceMergeIT.kt @@ -52,7 +52,7 @@ class ValidateForceMergeIT : IndexStateManagementRestTestCase() { // First execution: Policy is initialized updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Second execution: Index is set to read-only for force_merge updateManagedIndexConfigStartTime(managedIndexConfig) @@ -80,7 +80,7 @@ class ValidateForceMergeIT : IndexStateManagementRestTestCase() { assertEquals( "maxNumSegments not set in ActionProperties", forceMergeActionConfig.maxNumSegments, - getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties?.maxNumSegments + getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties?.maxNumSegments ) } @@ -89,7 +89,7 @@ class ValidateForceMergeIT : IndexStateManagementRestTestCase() { waitFor { assertTrue("Segment count for [$indexName] after force merge is incorrect", validateSegmentCount(indexName, min = 1, max = 1)) } // verify we reset actionproperties at end of forcemerge - waitFor { assertNull("maxNumSegments was not reset", getExplainManagedIndexMetaData(indexName).actionMetaData?.actionProperties) } + waitFor { assertNull("maxNumSegments was not reset", getExplainManagedIndexMetaData(indexName)!!.actionMetaData?.actionProperties) } // index should still be readonly after force merge finishes waitFor { assertEquals("true", getIndexBlocksWriteSetting(indexName)) } } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateIndexPriorityIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateIndexPriorityIT.kt index c3a8ce71b..263d9e0b5 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateIndexPriorityIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateIndexPriorityIT.kt @@ -47,7 +47,7 @@ class ValidateIndexPriorityIT : IndexStateManagementRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) // ism policy initialized - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // change the runJob start time to change index priority updateManagedIndexConfigStartTime(managedIndexConfig) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateOpenIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateOpenIT.kt index 0bb00610a..43c028ca9 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateOpenIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateOpenIT.kt @@ -53,7 +53,7 @@ class ValidateOpenIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadOnlyIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadOnlyIT.kt index 0bbcf9d81..3037cd487 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadOnlyIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadOnlyIT.kt @@ -51,7 +51,7 @@ class ValidateReadOnlyIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadWriteIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadWriteIT.kt index 1b530fb6b..8ebdb594c 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadWriteIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReadWriteIT.kt @@ -60,7 +60,7 @@ class ValidateReadWriteIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles. // Change the start time so the job will trigger in 2 seconds. diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReplicaCountIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReplicaCountIT.kt index 60f941588..6188eb64d 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReplicaCountIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateReplicaCountIT.kt @@ -50,7 +50,7 @@ class ValidateReplicaCountIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action which // should set the replica count to the desired number diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateRolloverIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateRolloverIT.kt index f1b20c14f..bb58f701b 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateRolloverIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateRolloverIT.kt @@ -53,7 +53,7 @@ class ValidateRolloverIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1)!!.policyID) } updateIndexSetting(index1, ManagedIndexSettings.ROLLOVER_SKIP.key, "true") @@ -104,7 +104,7 @@ class ValidateRolloverIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1)!!.policyID) } // Rollover the alias manually before ISM tries to roll it over rolloverIndex(aliasName) @@ -151,7 +151,7 @@ class ValidateRolloverIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) @@ -199,7 +199,7 @@ class ValidateRolloverIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds, this will trigger the first initialization of the policy updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(index1)!!.policyID) } // Need to speed up to second execution where it will trigger the first execution of the action updateManagedIndexConfigStartTime(managedIndexConfig) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateSnapshotIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateSnapshotIT.kt index 3f6dfd42c..1e93a53fd 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateSnapshotIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateSnapshotIT.kt @@ -53,7 +53,7 @@ class ValidateSnapshotIT : IndexStateManagementRestTestCase() { // Change the start time so the job will trigger in 2 seconds. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Need to wait two cycles for wait for snapshot step updateManagedIndexConfigStartTime(managedIndexConfig) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateTransitionIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateTransitionIT.kt index a2383b7b6..e1aa2c765 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateTransitionIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/validation/ValidateTransitionIT.kt @@ -49,7 +49,7 @@ class ValidateTransitionIT : IndexStateManagementRestTestCase() { // Initializing the policy/metadata updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyID, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Add 6 documents (>5) insertSampleData(indexName, 6) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/AccessRoles.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/AccessRoles.kt similarity index 98% rename from src/test/kotlin/org/opensearch/indexmanagement/AccessRoles.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/AccessRoles.kt index 19682e3ac..64ce8bc13 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/AccessRoles.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/AccessRoles.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.indexmanagement +package org.opensearch.indexmanagement.security import org.opensearch.indexmanagement.controlcenter.notification.action.delete.DeleteLRONConfigAction import org.opensearch.indexmanagement.controlcenter.notification.action.get.GetLRONConfigAction diff --git a/src/test/kotlin/org/opensearch/indexmanagement/security/ExplainSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/ExplainSecurityBehaviorIT.kt new file mode 100644 index 000000000..da7d2289b --- /dev/null +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/ExplainSecurityBehaviorIT.kt @@ -0,0 +1,115 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.indexmanagement.security + +import org.junit.After +import org.junit.Before +import org.opensearch.action.admin.indices.alias.IndicesAliasesRequest +import org.opensearch.client.ResponseException +import org.opensearch.client.RestClient +import org.opensearch.commons.rest.SecureRestClientBuilder +import org.opensearch.indexmanagement.IndexManagementPlugin +import org.opensearch.indexmanagement.SecurityRestTestCase +import org.opensearch.indexmanagement.indexstatemanagement.action.AliasAction +import org.opensearch.indexmanagement.indexstatemanagement.model.Policy +import org.opensearch.indexmanagement.indexstatemanagement.model.State +import org.opensearch.indexmanagement.indexstatemanagement.randomErrorNotification +import org.opensearch.indexmanagement.indexstatemanagement.transport.action.explain.ExplainAction +import org.opensearch.rest.RestStatus +import org.opensearch.test.junit.annotations.TestLogging +import java.time.Instant +import java.time.temporal.ChronoUnit +import java.util.Locale + +@TestLogging("level:DEBUG", reason = "Debug for tests.") +class ExplainSecurityBehaviorIT : SecurityRestTestCase() { + private val password = "Test123!hjkhkjh67867890jksdf" + private val ismUser = "john" + + private var userClient: RestClient? = null + + private val permittedIndiciesPrefix = "permitted-index" + private val permittedIndicesPattern = "permitted-index*" + @Before + fun setupUsersAndRoles() { + // Init super transform user + val helpdeskClusterPermissions = listOf( + ExplainAction.NAME + ) + + val indexPermissions = listOf( + MANAGED_INDEX, + CREATE_INDEX, + WRITE_INDEX, + BULK_WRITE_INDEX, + GET_INDEX_MAPPING, + SEARCH_INDEX, + PUT_INDEX_MAPPING + ) + // In this test suite case john is a "super-user" which has all relevant privileges + createUser(ismUser, password, listOf(HELPDESK)) + createRole(HELPDESK_ROLE, helpdeskClusterPermissions, indexPermissions, listOf(permittedIndicesPattern)) + assignRoleToUsers(HELPDESK_ROLE, listOf(ismUser)) + + userClient = + SecureRestClientBuilder(clusterHosts.toTypedArray(), isHttps(), ismUser, password).setSocketTimeout(60000) + .build() + } + + @After + fun cleanup() { + userClient?.close() + deleteUser(ismUser) + deleteRole(HELPDESK_ROLE) + + deleteIndexByName("${IndexManagementPlugin.INDEX_MANAGEMENT_INDEX}") + } + + fun `test managed index explain indices permission check`() { + + val notPermittedIndexPrefix = randomAlphaOfLength(10).lowercase(Locale.getDefault()) + val policyId = randomAlphaOfLength(10) + + val permittedindices = mutableListOf() + val notPermittedindices = mutableListOf() + for (i in 1..5) { + createIndex("$notPermittedIndexPrefix-$i", """ "properties": { "field_a": { "type": "long" } }""", client()) + createIndex("$permittedIndiciesPrefix-$i", """ "properties": { "field_a": { "type": "long" } }""", client()) + notPermittedindices += "$notPermittedIndexPrefix-$i" + permittedindices += "$permittedIndiciesPrefix-$i" + } + + val allIndicesJoined = (notPermittedindices + permittedindices).joinToString(separator = ",") + try { + val actions = listOf(IndicesAliasesRequest.AliasActions.add().alias("aaa")) + val actionConfig = AliasAction(actions = actions, index = 0) + val states = listOf(State("alias", listOf(actionConfig), listOf())) + val policy = Policy( + id = policyId, + description = "description", + schemaVersion = 1L, + lastUpdatedTime = Instant.now().truncatedTo(ChronoUnit.MILLIS), + errorNotification = randomErrorNotification(), + defaultState = "alias", + states = states + ) + createPolicy(policy, policy.id, true, client()) + + addPolicyToIndex(index = allIndicesJoined, policyId = policy.id, expectedStatus = RestStatus.OK, client = client()) + + refreshAllIndices() + + val explainResponse = managedIndicesExplain(notPermittedindices + permittedindices, userClient!!) + + assertEquals(permittedindices.size, explainResponse["total_managed_indices"] as Int) + } catch (e: ResponseException) { + fail(e.message) + } finally { + deleteIndexByName("$permittedIndiciesPrefix*") + deleteIndexByName("$notPermittedIndexPrefix*") + } + } +} diff --git a/src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/IndexStateManagementSecurityBehaviorIT.kt similarity index 94% rename from src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/IndexStateManagementSecurityBehaviorIT.kt index 7966222c6..50ac7842e 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/IndexStateManagementSecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/IndexStateManagementSecurityBehaviorIT.kt @@ -9,12 +9,13 @@ * GitHub history for details. */ -package org.opensearch.indexmanagement +package org.opensearch.indexmanagement.security import org.junit.After import org.junit.Before import org.opensearch.client.RestClient import org.opensearch.commons.rest.SecureRestClientBuilder +import org.opensearch.indexmanagement.SecurityRestTestCase import org.opensearch.indexmanagement.common.model.dimension.DateHistogram import org.opensearch.indexmanagement.common.model.dimension.Terms import org.opensearch.indexmanagement.indexstatemanagement.action.RollupAction @@ -25,6 +26,7 @@ import org.opensearch.indexmanagement.indexstatemanagement.randomErrorNotificati import org.opensearch.indexmanagement.indexstatemanagement.settings.ManagedIndexSettings import org.opensearch.indexmanagement.indexstatemanagement.step.rollup.AttemptCreateRollupJobStep import org.opensearch.indexmanagement.indexstatemanagement.step.rollup.WaitForRollupCompletionStep +import org.opensearch.indexmanagement.makeRequest import org.opensearch.indexmanagement.rollup.model.ISMRollup import org.opensearch.indexmanagement.rollup.model.RollupMetadata import org.opensearch.indexmanagement.rollup.model.RollupMetrics @@ -33,6 +35,7 @@ import org.opensearch.indexmanagement.rollup.model.metric.Max import org.opensearch.indexmanagement.rollup.model.metric.Min import org.opensearch.indexmanagement.rollup.model.metric.Sum import org.opensearch.indexmanagement.rollup.model.metric.ValueCount +import org.opensearch.indexmanagement.waitFor import org.opensearch.rest.RestStatus import org.opensearch.test.junit.annotations.TestLogging import java.time.Instant @@ -140,7 +143,7 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { val managedIndex = getExplainManagedIndexMetaData(indexName, superUserClient!!) - assertEquals(policyID, managedIndex.policyID) + assertEquals(policyID, managedIndex!!.policyID) assertEquals(indexName, managedIndex.index) // user without appropriate privileges can't access the neither the index nor the policy checkIndexAccess(indexName, testClient!!, RestStatus.FORBIDDEN) @@ -165,7 +168,7 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { try { val testPolicyJson = createReplicaCountTestPolicyRequest(10, "") createPolicyJson(testPolicyJson, AIRLINE_POLICY, true, superUserClient!!) - client().makeRequest("PUT", "/$AIRLINE_INDEX") + client().makeRequest("PUT", "/$AIRLINE_INDEX", emptyMap()) checkPolicyGet(AIRLINE_POLICY, testClient!!, RestStatus.OK) checkPolicyGet(AIRLINE_POLICY, superUserClient!!, RestStatus.OK) @@ -178,7 +181,7 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { } fun `test explain index`() { - createTestUserWithRole(listOf(EXPLAIN_INDEX), listOf(GET_INDEX_MAPPING, SEARCH_INDEX)) + createTestUserWithRole(listOf(EXPLAIN_INDEX), listOf(MANAGED_INDEX, GET_INDEX_MAPPING, SEARCH_INDEX)) testClient = SecureRestClientBuilder(clusterHosts.toTypedArray(), isHttps(), testUser, password).setSocketTimeout(60000) @@ -187,13 +190,12 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { try { val testPolicyJson = createReplicaCountTestPolicyRequest(10, AIRLINE_INDEX_PATTERN) createPolicyJson(testPolicyJson, AIRLINE_POLICY, true, client()) - client().makeRequest("PUT", "/$AIRLINE_INDEX") - + client().makeRequest("PUT", "/$AIRLINE_INDEX", emptyMap()) val testIndexConfig = getExistingManagedIndexConfig(AIRLINE_INDEX) updateManagedIndexConfigStartTime(testIndexConfig) waitFor { val airlineIndex = getExplainManagedIndexMetaData(AIRLINE_INDEX, testClient) - assertEquals(AIRLINE_POLICY, airlineIndex.policyID) + assertEquals(AIRLINE_POLICY, airlineIndex!!.policyID) assertEquals(AIRLINE_INDEX, airlineIndex.index) } } finally { @@ -288,14 +290,14 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { // Change the start time so that the policy will be initialized. updateManagedIndexConfigStartTime(managedIndexConfig) - waitFor { assertEquals(policyId, getExplainManagedIndexMetaData(indexName).policyID) } + waitFor { assertEquals(policyId, getExplainManagedIndexMetaData(indexName)!!.policyID) } // Change the start time so that the rollup action will be attempted. updateManagedIndexConfigStartTime(managedIndexConfig) waitFor { assertEquals( AttemptCreateRollupJobStep.getSuccessMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } @@ -306,7 +308,7 @@ class IndexStateManagementSecurityBehaviorIT : SecurityRestTestCase() { waitFor { assertEquals( WaitForRollupCompletionStep.getJobCompletionMessage(rollupId, indexName), - getExplainManagedIndexMetaData(indexName).info?.get("message") + getExplainManagedIndexMetaData(indexName)!!.info?.get("message") ) } val rollupJob = getRollup(rollupId = rollupId) diff --git a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/LRONConfigSecurityBehaviorIT.kt similarity index 93% rename from src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigSecurityBehaviorIT.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/LRONConfigSecurityBehaviorIT.kt index 83ea7a0c2..075f35764 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/controlcenter/notification/LRONConfigSecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/LRONConfigSecurityBehaviorIT.kt @@ -3,18 +3,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.opensearch.indexmanagement.controlcenter.notification +package org.opensearch.indexmanagement.security import org.junit.After import org.junit.Before import org.opensearch.client.Request import org.opensearch.client.RestClient import org.opensearch.commons.rest.SecureRestClientBuilder -import org.opensearch.indexmanagement.DELETE_LRON_CONFIG -import org.opensearch.indexmanagement.GET_LRON_CONFIG -import org.opensearch.indexmanagement.INDEX_LRON_CONFIG import org.opensearch.indexmanagement.IndexManagementPlugin import org.opensearch.indexmanagement.SecurityRestTestCase +import org.opensearch.indexmanagement.controlcenter.notification.getResourceURI +import org.opensearch.indexmanagement.controlcenter.notification.initNodeIdsInRestIT +import org.opensearch.indexmanagement.controlcenter.notification.nodeIdsInRestIT +import org.opensearch.indexmanagement.controlcenter.notification.randomLRONConfig +import org.opensearch.indexmanagement.controlcenter.notification.randomTaskId +import org.opensearch.indexmanagement.controlcenter.notification.toJsonString import org.opensearch.rest.RestStatus @Suppress("UNCHECKED_CAST") diff --git a/src/test/kotlin/org/opensearch/indexmanagement/PolicySecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/PolicySecurityBehaviorIT.kt similarity index 94% rename from src/test/kotlin/org/opensearch/indexmanagement/PolicySecurityBehaviorIT.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/PolicySecurityBehaviorIT.kt index 5af30a616..0e3e5c1a1 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/PolicySecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/PolicySecurityBehaviorIT.kt @@ -1,15 +1,9 @@ /* + * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. */ -package org.opensearch.indexmanagement +package org.opensearch.indexmanagement.security import org.junit.After import org.junit.Before @@ -18,6 +12,7 @@ import org.opensearch.client.ResponseException import org.opensearch.client.RestClient import org.opensearch.commons.rest.SecureRestClientBuilder import org.opensearch.indexmanagement.IndexManagementPlugin.Companion.INDEX_MANAGEMENT_INDEX +import org.opensearch.indexmanagement.SecurityRestTestCase import org.opensearch.indexmanagement.indexstatemanagement.action.AliasAction import org.opensearch.indexmanagement.indexstatemanagement.model.Policy import org.opensearch.indexmanagement.indexstatemanagement.model.State diff --git a/src/test/kotlin/org/opensearch/indexmanagement/RollupSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/RollupSecurityBehaviorIT.kt similarity index 97% rename from src/test/kotlin/org/opensearch/indexmanagement/RollupSecurityBehaviorIT.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/RollupSecurityBehaviorIT.kt index a34930c90..931fb9042 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/RollupSecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/RollupSecurityBehaviorIT.kt @@ -1,20 +1,15 @@ /* + * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. */ -package org.opensearch.indexmanagement +package org.opensearch.indexmanagement.security import org.junit.After import org.junit.Before import org.opensearch.client.RestClient import org.opensearch.commons.rest.SecureRestClientBuilder +import org.opensearch.indexmanagement.SecurityRestTestCase import org.opensearch.indexmanagement.common.model.dimension.DateHistogram import org.opensearch.indexmanagement.indexstatemanagement.settings.ManagedIndexSettings import org.opensearch.indexmanagement.rollup.model.Rollup @@ -26,6 +21,7 @@ import org.opensearch.indexmanagement.rollup.model.metric.Min import org.opensearch.indexmanagement.rollup.model.metric.Sum import org.opensearch.indexmanagement.rollup.model.metric.ValueCount import org.opensearch.indexmanagement.rollup.randomRollup +import org.opensearch.indexmanagement.waitFor import org.opensearch.jobscheduler.spi.schedule.IntervalSchedule import org.opensearch.rest.RestStatus import org.opensearch.test.junit.annotations.TestLogging diff --git a/src/test/kotlin/org/opensearch/indexmanagement/SecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/SecurityBehaviorIT.kt similarity index 95% rename from src/test/kotlin/org/opensearch/indexmanagement/SecurityBehaviorIT.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/SecurityBehaviorIT.kt index e7678745c..aed99c95b 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/SecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/SecurityBehaviorIT.kt @@ -1,4 +1,5 @@ /* + * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 * * The OpenSearch Contributors require contributions made to @@ -9,13 +10,16 @@ * GitHub history for details. */ -package org.opensearch.indexmanagement +package org.opensearch.indexmanagement.security import org.junit.After import org.junit.Before import org.opensearch.client.RestClient import org.opensearch.commons.rest.SecureRestClientBuilder +import org.opensearch.indexmanagement.SecurityRestTestCase import org.opensearch.indexmanagement.indexstatemanagement.settings.ManagedIndexSettings +import org.opensearch.indexmanagement.makeRequest +import org.opensearch.indexmanagement.waitFor import org.opensearch.rest.RestStatus import org.opensearch.test.junit.annotations.TestLogging @@ -135,11 +139,7 @@ class SecurityBehaviorIT : SecurityRestTestCase() { waitFor { var airlineIndex = getExplainManagedIndexMetaData(AIRLINE_INDEX, johnClient!!) - assertEquals(AIRLINE_POLICY, airlineIndex.policyID) - assertEquals(AIRLINE_INDEX, airlineIndex.index) - - airlineIndex = getExplainManagedIndexMetaData(AIRLINE_INDEX, janeClient) - assertEquals(AIRLINE_POLICY, airlineIndex.policyID) + assertEquals(AIRLINE_POLICY, airlineIndex!!.policyID) assertEquals(AIRLINE_INDEX, airlineIndex.index) } @@ -148,7 +148,7 @@ class SecurityBehaviorIT : SecurityRestTestCase() { waitFor { val availabilityIndex = getExplainManagedIndexMetaData(AVAILABILITY_INDEX, janeClient) - assertEquals(AVAILABILITY_POLICY, availabilityIndex.policyID) + assertEquals(AVAILABILITY_POLICY, availabilityIndex!!.policyID) assertEquals(AVAILABILITY_INDEX, availabilityIndex.index) } diff --git a/src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt b/src/test/kotlin/org/opensearch/indexmanagement/security/TransformSecurityBehaviorIT.kt similarity index 97% rename from src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt rename to src/test/kotlin/org/opensearch/indexmanagement/security/TransformSecurityBehaviorIT.kt index 071ece9c9..02c139688 100644 --- a/src/test/kotlin/org/opensearch/indexmanagement/TransformSecurityBehaviorIT.kt +++ b/src/test/kotlin/org/opensearch/indexmanagement/security/TransformSecurityBehaviorIT.kt @@ -1,25 +1,21 @@ /* + * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. */ -package org.opensearch.indexmanagement +package org.opensearch.indexmanagement.security import org.junit.After import org.junit.Before import org.opensearch.client.RestClient import org.opensearch.commons.rest.SecureRestClientBuilder +import org.opensearch.indexmanagement.SecurityRestTestCase import org.opensearch.indexmanagement.common.model.dimension.Terms import org.opensearch.indexmanagement.indexstatemanagement.settings.ManagedIndexSettings import org.opensearch.indexmanagement.transform.model.Transform import org.opensearch.indexmanagement.transform.model.TransformMetadata import org.opensearch.indexmanagement.transform.randomTransform +import org.opensearch.indexmanagement.waitFor import org.opensearch.jobscheduler.spi.schedule.IntervalSchedule import org.opensearch.rest.RestStatus import org.opensearch.test.junit.annotations.TestLogging