Skip to content

Commit

Permalink
Added a noop workflow step to delete model group (#376)
Browse files Browse the repository at this point in the history
  • Loading branch information
owaiskazi19 authored Jan 5, 2024
1 parent 7419e9f commit 324a56a
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
import org.opensearch.flowframework.workflow.CreateIngestPipelineStep;
import org.opensearch.flowframework.workflow.DeleteAgentStep;
import org.opensearch.flowframework.workflow.DeleteConnectorStep;
import org.opensearch.flowframework.workflow.DeleteModelGroupStep;
import org.opensearch.flowframework.workflow.DeleteModelStep;
import org.opensearch.flowframework.workflow.DeployModelStep;
import org.opensearch.flowframework.workflow.ModelGroupStep;
import org.opensearch.flowframework.workflow.RegisterAgentStep;
import org.opensearch.flowframework.workflow.RegisterLocalModelStep;
import org.opensearch.flowframework.workflow.RegisterModelGroupStep;
import org.opensearch.flowframework.workflow.RegisterRemoteModelStep;
import org.opensearch.flowframework.workflow.UndeployModelStep;

Expand All @@ -40,8 +41,8 @@ public enum WorkflowResources {
REGISTER_REMOTE_MODEL(RegisterRemoteModelStep.NAME, WorkflowResources.MODEL_ID, DeleteModelStep.NAME),
/** Workflow steps for registering/deleting a local model and associated created resource */
REGISTER_LOCAL_MODEL(RegisterLocalModelStep.NAME, WorkflowResources.MODEL_ID, DeleteModelStep.NAME),
/** Workflow steps for registering a model group and associated created resource */
REGISTER_MODEL_GROUP(ModelGroupStep.NAME, WorkflowResources.MODEL_GROUP_ID, null), // TODO delete step
/** Workflow steps for registering/deleting a model group and associated created resource */
REGISTER_MODEL_GROUP(RegisterModelGroupStep.NAME, WorkflowResources.MODEL_GROUP_ID, DeleteModelGroupStep.NAME),
/** Workflow steps for deploying/undeploying a model and associated created resource */
DEPLOY_MODEL(DeployModelStep.NAME, WorkflowResources.MODEL_ID, UndeployModelStep.NAME),
/** Workflow steps for creating an ingest-pipeline and associated created resource */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* 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.
*/
package org.opensearch.flowframework.workflow;

import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
* Step to delete a model group
*/
public class DeleteModelGroupStep implements WorkflowStep {

/** Instantiate this class */
public DeleteModelGroupStep() {}

/** The name of this step, used as a key in the template and the {@link WorkflowStepFactory} */
public static final String NAME = "delete_model_group";

@Override
public CompletableFuture<WorkflowData> execute(
String currentNodeId,
WorkflowData currentNodeInputs,
Map<String, WorkflowData> outputs,
Map<String, String> previousNodeInputs
) {
return CompletableFuture.completedFuture(WorkflowData.EMPTY);
}

@Override
public String getName() {
return NAME;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
/**
* Step to register a model group
*/
public class ModelGroupStep implements WorkflowStep {
public class RegisterModelGroupStep implements WorkflowStep {

private static final Logger logger = LogManager.getLogger(ModelGroupStep.class);
private static final Logger logger = LogManager.getLogger(RegisterModelGroupStep.class);

private final MachineLearningNodeClient mlClient;

Expand All @@ -55,7 +55,7 @@ public class ModelGroupStep implements WorkflowStep {
* @param mlClient client to instantiate MLClient
* @param flowFrameworkIndicesHandler FlowFrameworkIndicesHandler class to update system indices
*/
public ModelGroupStep(MachineLearningNodeClient mlClient, FlowFrameworkIndicesHandler flowFrameworkIndicesHandler) {
public RegisterModelGroupStep(MachineLearningNodeClient mlClient, FlowFrameworkIndicesHandler flowFrameworkIndicesHandler) {
this.mlClient = mlClient;
this.flowFrameworkIndicesHandler = flowFrameworkIndicesHandler;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ public WorkflowStepFactory(
stepMap.put(UndeployModelStep.NAME, () -> new UndeployModelStep(mlClient));
stepMap.put(CreateConnectorStep.NAME, () -> new CreateConnectorStep(mlClient, flowFrameworkIndicesHandler));
stepMap.put(DeleteConnectorStep.NAME, () -> new DeleteConnectorStep(mlClient));
stepMap.put(ModelGroupStep.NAME, () -> new ModelGroupStep(mlClient, flowFrameworkIndicesHandler));
stepMap.put(RegisterModelGroupStep.NAME, () -> new RegisterModelGroupStep(mlClient, flowFrameworkIndicesHandler));
stepMap.put(DeleteModelGroupStep.NAME, DeleteModelGroupStep::new);
stepMap.put(ToolStep.NAME, ToolStep::new);
stepMap.put(RegisterAgentStep.NAME, () -> new RegisterAgentStep(mlClient, flowFrameworkIndicesHandler));
stepMap.put(DeleteAgentStep.NAME, () -> new DeleteAgentStep(mlClient));
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/mappings/workflow-steps.json
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@
"opensearch-ml"
]
},
"delete_model_group": {
"inputs":[],
"outputs":[],
"required_plugins":[]
},
"register_agent": {
"inputs":[
"name",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* 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.
*/
package org.opensearch.flowframework.workflow;

import org.opensearch.test.OpenSearchTestCase;

import java.io.IOException;
import java.util.Collections;
import java.util.concurrent.CompletableFuture;

public class DeleteModelGroupTests extends OpenSearchTestCase {

public void testDeleteModelGroup() throws IOException {
DeleteModelGroupStep deleteModelGroupStep = new DeleteModelGroupStep();
assertEquals(DeleteModelGroupStep.NAME, deleteModelGroupStep.getName());
CompletableFuture<WorkflowData> future = deleteModelGroupStep.execute(
"nodeId",
WorkflowData.EMPTY,
Collections.emptyMap(),
Collections.emptyMap()
);
assertTrue(future.isDone());
assertFalse(future.isCompletedExceptionally());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public void testRegisterModelGroup() throws ExecutionException, InterruptedExcep
String modelGroupId = MODEL_GROUP_ID;
String status = MLTaskState.CREATED.name();

ModelGroupStep modelGroupStep = new ModelGroupStep(machineLearningNodeClient, flowFrameworkIndicesHandler);
RegisterModelGroupStep modelGroupStep = new RegisterModelGroupStep(machineLearningNodeClient, flowFrameworkIndicesHandler);

@SuppressWarnings("unchecked")
ArgumentCaptor<ActionListener<MLRegisterModelGroupResponse>> actionListenerCaptor = ArgumentCaptor.forClass(ActionListener.class);
Expand Down Expand Up @@ -107,7 +107,7 @@ public void testRegisterModelGroup() throws ExecutionException, InterruptedExcep
}

public void testRegisterModelGroupFailure() throws IOException {
ModelGroupStep modelGroupStep = new ModelGroupStep(machineLearningNodeClient, flowFrameworkIndicesHandler);
RegisterModelGroupStep modelGroupStep = new RegisterModelGroupStep(machineLearningNodeClient, flowFrameworkIndicesHandler);

@SuppressWarnings("unchecked")
ArgumentCaptor<ActionListener<MLRegisterModelGroupResponse>> actionListenerCaptor = ArgumentCaptor.forClass(ActionListener.class);
Expand Down Expand Up @@ -135,7 +135,7 @@ public void testRegisterModelGroupFailure() throws IOException {
}

public void testRegisterModelGroupWithNoName() throws IOException {
ModelGroupStep modelGroupStep = new ModelGroupStep(machineLearningNodeClient, flowFrameworkIndicesHandler);
RegisterModelGroupStep modelGroupStep = new RegisterModelGroupStep(machineLearningNodeClient, flowFrameworkIndicesHandler);

CompletableFuture<WorkflowData> future = modelGroupStep.execute(
inputDataWithNoName.getNodeId(),
Expand Down

0 comments on commit 324a56a

Please sign in to comment.