From 72e3076ba01f8aed5e953846e4d0658430fe6782 Mon Sep 17 00:00:00 2001 From: Daniel Widdis Date: Thu, 23 Jan 2025 12:13:30 -0800 Subject: [PATCH] Replace fakeTenantId placeholders with actual tenant id Signed-off-by: Daniel Widdis --- .../indices/FlowFrameworkIndicesHandler.java | 32 -------------- .../CreateWorkflowTransportAction.java | 7 +++- .../DeprovisionWorkflowTransportAction.java | 4 +- .../ProvisionWorkflowTransportAction.java | 2 +- .../ReprovisionWorkflowTransportAction.java | 5 ++- .../workflow/AbstractCreatePipelineStep.java | 1 + .../AbstractRegisterLocalModelStep.java | 2 + .../AbstractRetryableWorkflowStep.java | 11 ++++- .../workflow/CreateConnectorStep.java | 1 + .../workflow/CreateIndexStep.java | 1 + .../workflow/DeployModelStep.java | 1 + .../workflow/RegisterAgentStep.java | 1 + .../workflow/RegisterModelGroupStep.java | 1 + .../workflow/RegisterRemoteModelStep.java | 2 + .../workflow/WorkflowProcessSorter.java | 42 ++++++++++++------- .../FlowFrameworkIndicesHandlerTests.java | 18 +++++--- ...provisionWorkflowTransportActionTests.java | 8 +++- .../workflow/CreateConnectorStepTests.java | 5 ++- .../workflow/CreateIndexStepTests.java | 5 ++- .../CreateIngestPipelineStepTests.java | 5 ++- .../CreateSearchPipelineStepTests.java | 5 ++- .../workflow/DeployModelStepTests.java | 5 ++- .../workflow/RegisterAgentTests.java | 11 +++-- .../RegisterLocalCustomModelStepTests.java | 10 +++-- ...RegisterLocalPretrainedModelStepTests.java | 5 ++- ...sterLocalSparseEncodingModelStepTests.java | 5 ++- .../workflow/RegisterModelGroupStepTests.java | 5 ++- .../RegisterRemoteModelStepTests.java | 24 +++++++---- .../workflow/WorkflowProcessSorterTests.java | 12 ++++-- 29 files changed, 139 insertions(+), 97 deletions(-) diff --git a/src/main/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandler.java b/src/main/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandler.java index 637b9521c..7ef77966d 100644 --- a/src/main/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandler.java +++ b/src/main/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandler.java @@ -876,26 +876,6 @@ public void deleteFlowFrameworkSystemIndexDoc(String documentId, String tenantId } } - /** - * Adds a resource to the state index, including common exception handling - * @param currentNodeInputs Inputs to the current node - * @param nodeId current process node (workflow step) id - * @param workflowStepName the workflow step name that created the resource - * @param resourceId the id of the newly created resource - * @param listener the ActionListener for this step to handle completing the future after update - * @deprecated here temporarily until tenantID passed https://github.com/opensearch-project/flow-framework/issues/987 - */ - @Deprecated - public void addResourceToStateIndex( - WorkflowData currentNodeInputs, - String nodeId, - String workflowStepName, - String resourceId, - ActionListener listener - ) { - addResourceToStateIndex(currentNodeInputs, nodeId, workflowStepName, resourceId, "fakeTenantId", listener); - } - /** * Adds a resource to the state index, including common exception handling * @param currentNodeInputs Inputs to the current node @@ -931,18 +911,6 @@ public void addResourceToStateIndex( } } - /** - * Removes a resource from the state index, including common exception handling - * @param workflowId The workflow document id in the state index - * @param resourceToDelete The resource to delete - * @param listener the ActionListener for this step to handle completing the future after update - * @deprecated here temporarily until tenantID passed https://github.com/opensearch-project/flow-framework/issues/987 - */ - @Deprecated - public void deleteResourceFromStateIndex(String workflowId, ResourceCreated resourceToDelete, ActionListener listener) { - deleteResourceFromStateIndex(workflowId, "fakeTenantId", resourceToDelete, listener); - } - /** * Removes a resource from the state index, including common exception handling * @param workflowId The workflow document id in the state index diff --git a/src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java b/src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java index 0c193f790..2cc082994 100644 --- a/src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java +++ b/src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java @@ -568,7 +568,12 @@ void checkMaxWorkflows(TimeValue requestTimeOut, Integer maxWorkflow, String ten private void validateWorkflows(Template template) throws Exception { for (Workflow workflow : template.workflows().values()) { - List sortedNodes = workflowProcessSorter.sortProcessNodes(workflow, null, Collections.emptyMap(), "fakeTenantId"); + List sortedNodes = workflowProcessSorter.sortProcessNodes( + workflow, + null, + Collections.emptyMap(), + template.getTenantId() + ); workflowProcessSorter.validate(sortedNodes, pluginsService); } } diff --git a/src/main/java/org/opensearch/flowframework/transport/DeprovisionWorkflowTransportAction.java b/src/main/java/org/opensearch/flowframework/transport/DeprovisionWorkflowTransportAction.java index 0cbf04fc1..5eacbc699 100644 --- a/src/main/java/org/opensearch/flowframework/transport/DeprovisionWorkflowTransportAction.java +++ b/src/main/java/org/opensearch/flowframework/transport/DeprovisionWorkflowTransportAction.java @@ -227,7 +227,7 @@ private void executeDeprovisionSequence( this.threadPool, DEPROVISION_WORKFLOW_THREAD_POOL, flowFrameworkSettings.getRequestTimeout(), - "fakeTenantId" + tenantId ) ); } @@ -291,7 +291,7 @@ private void executeDeprovisionSequence( this.threadPool, DEPROVISION_WORKFLOW_THREAD_POOL, pn.nodeTimeout(), - "fakeTenantId" + tenantId ); }).collect(Collectors.toList()); // Pause briefly before next loop diff --git a/src/main/java/org/opensearch/flowframework/transport/ProvisionWorkflowTransportAction.java b/src/main/java/org/opensearch/flowframework/transport/ProvisionWorkflowTransportAction.java index b356dc70a..d5550a8f5 100644 --- a/src/main/java/org/opensearch/flowframework/transport/ProvisionWorkflowTransportAction.java +++ b/src/main/java/org/opensearch/flowframework/transport/ProvisionWorkflowTransportAction.java @@ -210,7 +210,7 @@ private void executeProvisionRequest( provisionWorkflow, workflowId, request.getParams(), - "fakeTenantId" + tenantId ); workflowProcessSorter.validate(provisionProcessSequence, pluginsService); diff --git a/src/main/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportAction.java b/src/main/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportAction.java index a399adbb1..ec5637cdb 100644 --- a/src/main/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportAction.java +++ b/src/main/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportAction.java @@ -213,7 +213,7 @@ private void executeReprovisionRequest( provisionWorkflow, request.getWorkflowId(), Collections.emptyMap(), // TODO : Add suport to reprovision substitution templates - "fakeTenantId" + tenantId ); try { @@ -230,7 +230,8 @@ private void executeReprovisionRequest( workflowId, originalTemplate, updatedTemplate, - resourceCreated + resourceCreated, + tenantId ); // Remove error field if any prior to subsequent execution diff --git a/src/main/java/org/opensearch/flowframework/workflow/AbstractCreatePipelineStep.java b/src/main/java/org/opensearch/flowframework/workflow/AbstractCreatePipelineStep.java index e779ddf4f..d1916dc85 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/AbstractCreatePipelineStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/AbstractCreatePipelineStep.java @@ -105,6 +105,7 @@ public void onResponse(AcknowledgedResponse acknowledgedResponse) { currentNodeId, getName(), pipelineId, + tenantId, createPipelineFuture ); } diff --git a/src/main/java/org/opensearch/flowframework/workflow/AbstractRegisterLocalModelStep.java b/src/main/java/org/opensearch/flowframework/workflow/AbstractRegisterLocalModelStep.java index 79adb1e1c..60f714443 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/AbstractRegisterLocalModelStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/AbstractRegisterLocalModelStep.java @@ -195,6 +195,7 @@ public PlainActionFuture execute( registerLocalModelFuture, taskId, "Local model registration", + tenantId, ActionListener.wrap(mlTaskWorkflowData -> { // Registered Model Resource has been updated String resourceName = getResourceByWorkflowStep(getName()); @@ -219,6 +220,7 @@ public PlainActionFuture execute( currentNodeId, DeployModelStep.NAME, id, + tenantId, deployUpdateListener ); } else { diff --git a/src/main/java/org/opensearch/flowframework/workflow/AbstractRetryableWorkflowStep.java b/src/main/java/org/opensearch/flowframework/workflow/AbstractRetryableWorkflowStep.java index bf6585dc8..c251e44cb 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/AbstractRetryableWorkflowStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/AbstractRetryableWorkflowStep.java @@ -68,6 +68,7 @@ protected AbstractRetryableWorkflowStep( * @param future the workflow step future * @param taskId the ml task id * @param workflowStep the workflow step which requires a retry get ml task functionality + * @param tenantId the tenant ID * @param mlTaskListener the ML Task Listener */ protected void retryableGetMlTask( @@ -76,6 +77,7 @@ protected void retryableGetMlTask( PlainActionFuture future, String taskId, String workflowStep, + String tenantId, ActionListener mlTaskListener ) { CompletableFuture.runAsync(() -> { @@ -91,7 +93,14 @@ protected void retryableGetMlTask( content.put(REGISTER_MODEL_STATUS, response.getState().toString()); mlTaskListener.onResponse(new WorkflowData(content, r.getWorkflowId(), r.getNodeId())); }, mlTaskListener::onFailure); - flowFrameworkIndicesHandler.addResourceToStateIndex(currentNodeInputs, nodeId, getName(), id, resourceListener); + flowFrameworkIndicesHandler.addResourceToStateIndex( + currentNodeInputs, + nodeId, + getName(), + id, + tenantId, + resourceListener + ); break; case FAILED: case COMPLETED_WITH_ERROR: diff --git a/src/main/java/org/opensearch/flowframework/workflow/CreateConnectorStep.java b/src/main/java/org/opensearch/flowframework/workflow/CreateConnectorStep.java index 08aac354a..29387120a 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/CreateConnectorStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/CreateConnectorStep.java @@ -91,6 +91,7 @@ public void onResponse(MLCreateConnectorResponse mlCreateConnectorResponse) { currentNodeId, getName(), mlCreateConnectorResponse.getConnectorId(), + tenantId, createConnectorFuture ); } diff --git a/src/main/java/org/opensearch/flowframework/workflow/CreateIndexStep.java b/src/main/java/org/opensearch/flowframework/workflow/CreateIndexStep.java index 14cbb0736..7f9233f7b 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/CreateIndexStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/CreateIndexStep.java @@ -116,6 +116,7 @@ public PlainActionFuture execute( currentNodeId, getName(), indexName, + tenantId, createIndexFuture ); }, ex -> { diff --git a/src/main/java/org/opensearch/flowframework/workflow/DeployModelStep.java b/src/main/java/org/opensearch/flowframework/workflow/DeployModelStep.java index 46ee3a24b..2d331d7e7 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/DeployModelStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/DeployModelStep.java @@ -99,6 +99,7 @@ public void onResponse(MLDeployModelResponse mlDeployModelResponse) { deployModelFuture, taskId, "Deploy model", + tenantId, ActionListener.wrap( deployModelFuture::onResponse, e -> deployModelFuture.onFailure( diff --git a/src/main/java/org/opensearch/flowframework/workflow/RegisterAgentStep.java b/src/main/java/org/opensearch/flowframework/workflow/RegisterAgentStep.java index 45cc08bdc..0f5c2b501 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/RegisterAgentStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/RegisterAgentStep.java @@ -101,6 +101,7 @@ public void onResponse(MLRegisterAgentResponse mlRegisterAgentResponse) { currentNodeId, getName(), mlRegisterAgentResponse.getAgentId(), + tenantId, registerAgentModelFuture ); } diff --git a/src/main/java/org/opensearch/flowframework/workflow/RegisterModelGroupStep.java b/src/main/java/org/opensearch/flowframework/workflow/RegisterModelGroupStep.java index 90606c81b..e21f7a953 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/RegisterModelGroupStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/RegisterModelGroupStep.java @@ -89,6 +89,7 @@ public void onResponse(MLRegisterModelGroupResponse mlRegisterModelGroupResponse currentNodeId, getName(), mlRegisterModelGroupResponse.getModelGroupId(), + tenantId, resourceListener ); } diff --git a/src/main/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStep.java b/src/main/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStep.java index b1d39b830..2f184358a 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStep.java +++ b/src/main/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStep.java @@ -167,6 +167,7 @@ public void onResponse(MLRegisterModelResponse mlRegisterModelResponse) { currentNodeId, getName(), mlRegisterModelResponse.getModelId(), + tenantId, registerUpdateListener ); } @@ -184,6 +185,7 @@ private void updateDeployResource(String resourceName, MLRegisterModelResponse m currentNodeId, DeployModelStep.NAME, mlRegisterModelResponse.getModelId(), + tenantId, deployUpdateListener ); } diff --git a/src/main/java/org/opensearch/flowframework/workflow/WorkflowProcessSorter.java b/src/main/java/org/opensearch/flowframework/workflow/WorkflowProcessSorter.java index d0abb8c6e..2f64a2683 100644 --- a/src/main/java/org/opensearch/flowframework/workflow/WorkflowProcessSorter.java +++ b/src/main/java/org/opensearch/flowframework/workflow/WorkflowProcessSorter.java @@ -156,6 +156,7 @@ public List sortProcessNodes(Workflow workflow, String workflowId, * @param originalTemplate the original template currently indexed * @param updatedTemplate the updated template to be executed * @param resourcesCreated the resources previously created for the workflow + * @param tenantId the tenant id * @throws Exception for issues creating the reprovision sequence * @return A list of ProcessNode */ @@ -163,7 +164,8 @@ public List createReprovisionSequence( String workflowId, Template originalTemplate, Template updatedTemplate, - List resourcesCreated + List resourcesCreated, + String tenantId ) throws Exception { Workflow updatedWorkflow = updatedTemplate.workflows().get(PROVISION_WORKFLOW); @@ -205,7 +207,8 @@ public List createReprovisionSequence( updatedWorkflow, sortedUpdatedNodes, originalTemplateMap, - resourcesCreated + resourcesCreated, + tenantId ); // If the reprovision sequence consists entirely of WorkflowDataSteps, then no modifications were made to the exisiting template. @@ -223,6 +226,7 @@ public List createReprovisionSequence( * @param sortedUpdatedNodes the topologically sorted updated template nodes * @param originalTemplateMap a map of node Id to workflow node of the original template * @param resourcesCreated a list of resources created for this template + * @param tenantId the tenant id * @return a list of process node representing the reprovision sequence * @throws Exception for issues creating the reprovision sequence */ @@ -231,7 +235,8 @@ private List createReprovisionSequence( Workflow updatedWorkflow, List sortedUpdatedNodes, Map originalTemplateMap, - List resourcesCreated + List resourcesCreated, + String tenantId ) throws Exception { Map idToNodeMap = new HashMap<>(); List reprovisionSequence = new ArrayList<>(); @@ -243,7 +248,8 @@ private List createReprovisionSequence( originalTemplateMap, resourcesCreated, workflowId, - idToNodeMap + idToNodeMap, + tenantId ); if (processNode != null) { idToNodeMap.put(processNode.id(), processNode); @@ -262,6 +268,7 @@ private List createReprovisionSequence( * @param resourcesCreated a list of resources created for this template * @param workflowId the workflow ID associated with the template * @param idToNodeMap a map of the current reprovision sequence + * @param tenantId the tenant id * @return a ProcessNode * @throws Exception for issues creating the process node */ @@ -271,7 +278,8 @@ private ProcessNode createProcessNode( Map originalTemplateMap, List resourcesCreated, String workflowId, - Map idToNodeMap + Map idToNodeMap, + String tenantId ) throws Exception { WorkflowData data = new WorkflowData(node.userInputs(), updatedWorkflow.userParams(), workflowId, node.id()); List predecessorNodes = updatedWorkflow.edges() @@ -284,15 +292,15 @@ private ProcessNode createProcessNode( if (!originalTemplateMap.containsKey(node.id())) { // Case 1: Additive modification, create new node - return createNewProcessNode(node, data, predecessorNodes, nodeTimeout); + return createNewProcessNode(node, data, predecessorNodes, nodeTimeout, tenantId); } else { WorkflowNode originalNode = originalTemplateMap.get(node.id()); if (shouldUpdateNode(node, originalNode)) { // Case 2: Existing modification, create update step - return createUpdateProcessNode(node, data, predecessorNodes, nodeTimeout); + return createUpdateProcessNode(node, data, predecessorNodes, nodeTimeout, tenantId); } else { // Case 4: No modification to existing node, create proxy step - return createWorkflowDataStepNode(node, data, predecessorNodes, nodeTimeout, resourcesCreated); + return createWorkflowDataStepNode(node, data, predecessorNodes, nodeTimeout, resourcesCreated, tenantId); } } } @@ -303,13 +311,15 @@ private ProcessNode createProcessNode( * @param data the current node data * @param predecessorNodes the current node predecessors * @param nodeTimeout the current node timeout + * @param tenantId the tenant id * @return a Process Node */ private ProcessNode createNewProcessNode( WorkflowNode node, WorkflowData data, List predecessorNodes, - TimeValue nodeTimeout + TimeValue nodeTimeout, + String tenantId ) { WorkflowStep step = workflowStepFactory.createStep(node.type()); return new ProcessNode( @@ -322,7 +332,7 @@ private ProcessNode createNewProcessNode( threadPool, PROVISION_WORKFLOW_THREAD_POOL, nodeTimeout, - "fakeTenantId" + tenantId ); } @@ -332,6 +342,7 @@ private ProcessNode createNewProcessNode( * @param data the current node data * @param predecessorNodes the current node predecessors * @param nodeTimeout the current node timeout + * @param tenantId the tenant id * @return a ProcessNode * @throws FlowFrameworkException if the current node does not support updates */ @@ -339,7 +350,8 @@ private ProcessNode createUpdateProcessNode( WorkflowNode node, WorkflowData data, List predecessorNodes, - TimeValue nodeTimeout + TimeValue nodeTimeout, + String tenantId ) throws FlowFrameworkException { String updateStepName = WorkflowResources.getUpdateStepByWorkflowStep(node.type()); if (updateStepName != null) { @@ -354,7 +366,7 @@ private ProcessNode createUpdateProcessNode( threadPool, PROVISION_WORKFLOW_THREAD_POOL, nodeTimeout, - "fakeTenantId" + tenantId ); } else { // Case 3 : Cannot update step (not supported) @@ -372,6 +384,7 @@ private ProcessNode createUpdateProcessNode( * @param predecessorNodes the current node predecessors * @param nodeTimeout the current node timeout * @param resourcesCreated the list of resources created for the template assoicated with this node + * @param tenantId the tenant id * @return a Process node */ private ProcessNode createWorkflowDataStepNode( @@ -379,7 +392,8 @@ private ProcessNode createWorkflowDataStepNode( WorkflowData data, List predecessorNodes, TimeValue nodeTimeout, - List resourcesCreated + List resourcesCreated, + String tenantId ) { ResourceCreated nodeResource = resourcesCreated.stream() .filter(rc -> rc.workflowStepId().equals(node.id())) @@ -397,7 +411,7 @@ private ProcessNode createWorkflowDataStepNode( threadPool, PROVISION_WORKFLOW_THREAD_POOL, nodeTimeout, - "fakeTenantId" + tenantId ); } else { return null; diff --git a/src/test/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandlerTests.java b/src/test/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandlerTests.java index acfd9f9ed..16cabf643 100644 --- a/src/test/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandlerTests.java +++ b/src/test/java/org/opensearch/flowframework/indices/FlowFrameworkIndicesHandlerTests.java @@ -599,6 +599,7 @@ public void testAddResourceToStateIndex() { "node_id", CreateConnectorStep.NAME, "this_id", + null, listener ); @@ -618,6 +619,7 @@ public void testAddResourceToStateIndex() { "node_id", CreateConnectorStep.NAME, "this_id", + null, listener ); @@ -642,6 +644,7 @@ public void testAddResourceToStateIndex() { "node_id", CreateConnectorStep.NAME, "this_id", + null, notFoundListener ); @@ -658,6 +661,7 @@ public void testAddResourceToStateIndex() { "node_id", CreateConnectorStep.NAME, "this_id", + null, indexNotFoundListener ); @@ -696,7 +700,7 @@ public void testDeleteResourceFromStateIndex() { return null; }).when(client).update(any(UpdateRequest.class), any()); - flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", resourceToDelete, listener); + flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", null, resourceToDelete, listener); ArgumentCaptor responseCaptor = ArgumentCaptor.forClass(WorkflowData.class); verify(listener, times(1)).onResponse(responseCaptor.capture()); @@ -709,7 +713,7 @@ public void testDeleteResourceFromStateIndex() { return null; }).when(client).update(any(UpdateRequest.class), any()); - flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", resourceToDelete, listener); + flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", null, resourceToDelete, listener); ArgumentCaptor exceptionCaptor = ArgumentCaptor.forClass(Exception.class); verify(listener, times(1)).onFailure(exceptionCaptor.capture()); @@ -727,7 +731,7 @@ public void testDeleteResourceFromStateIndex() { responseListener.onResponse(new GetResponse(getResult)); return null; }).when(client).get(any(GetRequest.class), any()); - flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", resourceToDelete, notFoundListener); + flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", null, resourceToDelete, notFoundListener); exceptionCaptor = ArgumentCaptor.forClass(Exception.class); verify(notFoundListener, times(1)).onFailure(exceptionCaptor.capture()); @@ -737,7 +741,7 @@ public void testDeleteResourceFromStateIndex() { when(mockMetaData.hasIndex(WORKFLOW_STATE_INDEX)).thenReturn(false); @SuppressWarnings("unchecked") ActionListener indexNotFoundListener = mock(ActionListener.class); - flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", resourceToDelete, indexNotFoundListener); + flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", null, resourceToDelete, indexNotFoundListener); exceptionCaptor = ArgumentCaptor.forClass(Exception.class); verify(indexNotFoundListener, times(1)).onFailure(exceptionCaptor.capture()); @@ -788,6 +792,7 @@ public void testAddResourceToStateIndexWithRetries() { "node_id", CreateConnectorStep.NAME, "this_id", + null, retryListener ); @@ -834,6 +839,7 @@ public void testAddResourceToStateIndexWithRetries() { "node_id", CreateConnectorStep.NAME, "this_id", + null, threeRetryListener ); @@ -883,7 +889,7 @@ public void testDeleteResourceFromStateIndexWithRetries() { return null; }).when(client).update(any(UpdateRequest.class), any()); - flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", resourceToDelete, retryListener); + flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", null, resourceToDelete, retryListener); ArgumentCaptor responseCaptor = ArgumentCaptor.forClass(WorkflowData.class); verify(retryListener, times(1)).onResponse(responseCaptor.capture()); @@ -923,7 +929,7 @@ public void testDeleteResourceFromStateIndexWithRetries() { return null; }).when(client).update(any(UpdateRequest.class), any()); - flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", resourceToDelete, threeRetryListener); + flowFrameworkIndicesHandler.deleteResourceFromStateIndex("this_id", null, resourceToDelete, threeRetryListener); ArgumentCaptor exceptionCaptor = ArgumentCaptor.forClass(Exception.class); verify(threeRetryListener, times(1)).onFailure(exceptionCaptor.capture()); diff --git a/src/test/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportActionTests.java b/src/test/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportActionTests.java index 8fbc6a67b..b1c648a24 100644 --- a/src/test/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportActionTests.java +++ b/src/test/java/org/opensearch/flowframework/transport/ReprovisionWorkflowTransportActionTests.java @@ -155,7 +155,9 @@ public void testReprovisionWorkflow() throws Exception { }).when(client).execute(any(), any(GetWorkflowStateRequest.class), any()); // Stub reprovision sequence creation - when(workflowProcessSorter.createReprovisionSequence(any(), any(), any(), any())).thenReturn(List.of(mock(ProcessNode.class))); + when(workflowProcessSorter.createReprovisionSequence(any(), any(), any(), any(), any())).thenReturn( + List.of(mock(ProcessNode.class)) + ); // Bypass updateFlowFrameworkSystemIndexDoc and stub on response doAnswer(invocation -> { @@ -283,7 +285,9 @@ public void testFailedStateUpdate() throws Exception { }).when(client).execute(any(), any(GetWorkflowStateRequest.class), any()); // Stub reprovision sequence creation - when(workflowProcessSorter.createReprovisionSequence(any(), any(), any(), any())).thenReturn(List.of(mock(ProcessNode.class))); + when(workflowProcessSorter.createReprovisionSequence(any(), any(), any(), any(), any())).thenReturn( + List.of(mock(ProcessNode.class)) + ); // Bypass updateFlowFrameworkSystemIndexDoc and stub on response doAnswer(invocation -> { diff --git a/src/test/java/org/opensearch/flowframework/workflow/CreateConnectorStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/CreateConnectorStepTests.java index 28adfaa73..070f01a0d 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/CreateConnectorStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/CreateConnectorStepTests.java @@ -94,10 +94,11 @@ public void testCreateConnector() throws IOException, ExecutionException, Interr }).when(machineLearningNodeClient).createConnector(any(MLCreateConnectorInput.class), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(CONNECTOR_ID, connectorId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = createConnectorStep.execute( inputData.getNodeId(), diff --git a/src/test/java/org/opensearch/flowframework/workflow/CreateIndexStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/CreateIndexStepTests.java index 08cba8267..42a124780 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/CreateIndexStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/CreateIndexStepTests.java @@ -92,10 +92,11 @@ public void setUp() throws Exception { public void testCreateIndexStep() throws ExecutionException, InterruptedException, IOException { doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(INDEX_NAME, "demo"), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); @SuppressWarnings({ "unchecked" }) ArgumentCaptor> actionListenerCaptor = ArgumentCaptor.forClass(ActionListener.class); diff --git a/src/test/java/org/opensearch/flowframework/workflow/CreateIngestPipelineStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/CreateIngestPipelineStepTests.java index c1c34fba6..0904d904b 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/CreateIngestPipelineStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/CreateIngestPipelineStepTests.java @@ -74,10 +74,11 @@ public void testCreateIngestPipelineStep() throws InterruptedException, Executio CreateIngestPipelineStep createIngestPipelineStep = new CreateIngestPipelineStep(client, flowFrameworkIndicesHandler); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(PIPELINE_ID, "pipelineId"), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); @SuppressWarnings("unchecked") ArgumentCaptor> actionListenerCaptor = ArgumentCaptor.forClass(ActionListener.class); diff --git a/src/test/java/org/opensearch/flowframework/workflow/CreateSearchPipelineStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/CreateSearchPipelineStepTests.java index de030093a..0cd629522 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/CreateSearchPipelineStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/CreateSearchPipelineStepTests.java @@ -74,10 +74,11 @@ public void testCreateSearchPipelineStep() throws InterruptedException, Executio CreateSearchPipelineStep createSearchPipelineStep = new CreateSearchPipelineStep(client, flowFrameworkIndicesHandler); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(PIPELINE_ID, "pipelineId"), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); @SuppressWarnings("unchecked") ArgumentCaptor> actionListenerCaptor = ArgumentCaptor.forClass(ActionListener.class); diff --git a/src/test/java/org/opensearch/flowframework/workflow/DeployModelStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/DeployModelStepTests.java index f4c297187..822d95ce6 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/DeployModelStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/DeployModelStepTests.java @@ -133,10 +133,11 @@ public void testDeployModel() throws ExecutionException, InterruptedException, I }).when(machineLearningNodeClient).getTask(any(), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = deployModel.execute( inputData.getNodeId(), diff --git a/src/test/java/org/opensearch/flowframework/workflow/RegisterAgentTests.java b/src/test/java/org/opensearch/flowframework/workflow/RegisterAgentTests.java index 41967ba0b..28b53d099 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/RegisterAgentTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/RegisterAgentTests.java @@ -38,6 +38,7 @@ import static org.opensearch.flowframework.common.WorkflowResources.AGENT_ID; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -107,10 +108,11 @@ public void testRegisterAgent() throws IOException, ExecutionException, Interrup }).when(machineLearningNodeClient).registerAgent(any(MLAgent.class), actionListenerCaptor.capture()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(AGENT_ID, agentId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), nullable(String.class), any()); PlainActionFuture future = registerAgentStep.execute( inputData.getNodeId(), @@ -141,10 +143,11 @@ public void testRegisterAgentFailure() throws IOException { }).when(machineLearningNodeClient).registerAgent(any(MLAgent.class), actionListenerCaptor.capture()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(AGENT_ID, agentId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = registerAgentStep.execute( inputData.getNodeId(), diff --git a/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalCustomModelStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalCustomModelStepTests.java index 073b738e4..26a6bc673 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalCustomModelStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalCustomModelStepTests.java @@ -154,10 +154,11 @@ public void testRegisterLocalCustomModelSuccess() throws Exception { }).when(machineLearningNodeClient).getTask(any(), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = registerLocalModelStep.execute( workflowData.getNodeId(), @@ -237,7 +238,7 @@ public void testRegisterLocalCustomModelDeployStateUpdateFail() throws Exception AtomicInteger invocationCount = new AtomicInteger(0); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); if (invocationCount.getAndIncrement() == 0) { // succeed on first call (update register) updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); @@ -246,7 +247,8 @@ public void testRegisterLocalCustomModelDeployStateUpdateFail() throws Exception updateResponseListener.onFailure(new RuntimeException("Failed to update deploy resource")); } return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); WorkflowData boolStringWorkflowData = new WorkflowData( Map.ofEntries( diff --git a/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalPretrainedModelStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalPretrainedModelStepTests.java index fce42dc31..3b82dde97 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalPretrainedModelStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalPretrainedModelStepTests.java @@ -147,10 +147,11 @@ public void testRegisterLocalPretrainedModelSuccess() throws Exception { }).when(machineLearningNodeClient).getTask(any(), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = registerLocalPretrainedModelStep.execute( workflowData.getNodeId(), diff --git a/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalSparseEncodingModelStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalSparseEncodingModelStepTests.java index 78f28841e..97c8a9b0f 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalSparseEncodingModelStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/RegisterLocalSparseEncodingModelStepTests.java @@ -150,10 +150,11 @@ public void testRegisterLocalSparseEncodingModelSuccess() throws Exception { }).when(machineLearningNodeClient).getTask(any(), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = registerLocalSparseEncodingModelStep.execute( workflowData.getNodeId(), diff --git a/src/test/java/org/opensearch/flowframework/workflow/RegisterModelGroupStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/RegisterModelGroupStepTests.java index ad96e0e48..c0e35458a 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/RegisterModelGroupStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/RegisterModelGroupStepTests.java @@ -111,10 +111,11 @@ public void testRegisterModelGroup() throws ExecutionException, InterruptedExcep }).when(machineLearningNodeClient).registerModelGroup(any(MLRegisterModelGroupInput.class), actionListenerCaptor.capture()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_GROUP_ID, modelGroupId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = modelGroupStep.execute( inputData.getNodeId(), diff --git a/src/test/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStepTests.java b/src/test/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStepTests.java index 14a01225d..9f6739688 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStepTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/RegisterRemoteModelStepTests.java @@ -44,6 +44,7 @@ import static org.opensearch.flowframework.common.WorkflowResources.MODEL_ID; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -95,10 +96,11 @@ public void testRegisterRemoteModelSuccess() throws Exception { }).when(mlNodeClient).register(any(MLRegisterModelInput.class), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); PlainActionFuture future = this.registerRemoteModelStep.execute( workflowData.getNodeId(), @@ -116,6 +118,7 @@ public void testRegisterRemoteModelSuccess() throws Exception { anyString(), anyString(), anyString(), + any(), any() ); @@ -138,10 +141,11 @@ public void testRegisterAndDeployRemoteModelSuccess() throws Exception { }).when(mlNodeClient).register(any(MLRegisterModelInput.class), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); WorkflowData deployWorkflowData = new WorkflowData( Map.ofEntries( @@ -170,6 +174,7 @@ public void testRegisterAndDeployRemoteModelSuccess() throws Exception { anyString(), anyString(), anyString(), + nullable(String.class), any() ); @@ -203,6 +208,7 @@ public void testRegisterAndDeployRemoteModelSuccess() throws Exception { anyString(), anyString(), anyString(), + nullable(String.class), any() ); @@ -246,10 +252,11 @@ public void testRegisterRemoteModelUpdateFailure() { }).when(mlNodeClient).register(any(MLRegisterModelInput.class), any()); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); updateResponseListener.onFailure(new RuntimeException("Failed to update register resource")); return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any(), any()); WorkflowData deployWorkflowData = new WorkflowData( Map.ofEntries( @@ -291,7 +298,7 @@ public void testRegisterRemoteModelDeployUpdateFailure() { AtomicInteger invocationCount = new AtomicInteger(0); doAnswer(invocation -> { - ActionListener updateResponseListener = invocation.getArgument(4); + ActionListener updateResponseListener = invocation.getArgument(5); if (invocationCount.getAndIncrement() == 0) { // succeed on first call (update register) updateResponseListener.onResponse(new WorkflowData(Map.of(MODEL_ID, modelId), "test-id", "test-node-id")); @@ -300,7 +307,8 @@ public void testRegisterRemoteModelDeployUpdateFailure() { updateResponseListener.onFailure(new RuntimeException("Failed to update deploy resource")); } return null; - }).when(flowFrameworkIndicesHandler).addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), any()); + }).when(flowFrameworkIndicesHandler) + .addResourceToStateIndex(any(WorkflowData.class), anyString(), anyString(), anyString(), nullable(String.class), any()); WorkflowData deployWorkflowData = new WorkflowData( Map.ofEntries( diff --git a/src/test/java/org/opensearch/flowframework/workflow/WorkflowProcessSorterTests.java b/src/test/java/org/opensearch/flowframework/workflow/WorkflowProcessSorterTests.java index 41132377a..a05cc8db1 100644 --- a/src/test/java/org/opensearch/flowframework/workflow/WorkflowProcessSorterTests.java +++ b/src/test/java/org/opensearch/flowframework/workflow/WorkflowProcessSorterTests.java @@ -629,7 +629,8 @@ public void testCreateReprovisionSequenceWithNoChange() { "1", reprovisionTemplate, reprovisionTemplate, - List.of(pipelineResource, indexResource) + List.of(pipelineResource, indexResource), + null ) ); @@ -675,7 +676,8 @@ public void testCreateReprovisionSequenceWithDeletion() { "1", reprovisionTemplate, templateWithNoCreateIndex, - List.of(pipelineResource, indexResource) + List.of(pipelineResource, indexResource), + null ) ); @@ -744,7 +746,8 @@ public void testCreateReprovisionSequenceWithAdditiveModification() throws Excep "1", reprovisionTemplate, templateWithAdditiveModification, - List.of(pipelineResource, indexResource) + List.of(pipelineResource, indexResource), + null ); // Should result in a 3 step sequence @@ -809,7 +812,8 @@ public void testCreateReprovisionSequenceWithUpdates() throws Exception { "1", reprovisionTemplate, templateWithModifiedNodes, - List.of(pipelineResource, indexResource) + List.of(pipelineResource, indexResource), + null ); // Should result in a 2 step sequence