/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.protectioncontroller;
import java.net.URI;
import java.util.List;
import java.util.Map;
import com.emc.storageos.workflow.Workflow;
/**
* Protection Export Base Controller Interface
*/
public interface ProtectionExportController {
/**
* Adds the export group create workflow steps.
*
* @param workflow the main workflow
* @param wfGroupId the workflow group Id, if any
* @param waitFor the id of a step on which this workflow has to wait, if any
* @param export the export group being updated
* @param objectsToAdd the map of block objects to be added
* @param storageUri the block storage system
* @param initiatorURIs the new list of initiators to be added
* @return the id of the last step that was added to main workflow
*/
public String addStepsForExportGroupCreate(Workflow workflow, String wfGroupId, String waitFor, URI export,
Map<URI, Integer> objectsToAdd, URI storageUri, List<URI> initiatorURIs);
/**
* Adds the export group remove volumes workflow steps.
*
* @param workflow the main workflow
* @param wfGroupId the workflow group Id, if any
* @param waitFor the id of a step on which this workflow has to wait, if any
* @param export the export group being updated
* @param objectsToRemove the map of block objects to be removed
* @param storageUri the block storage system
* @return the id of the last step that was added to main workflow
*/
public String addStepsForExportGroupRemoveVolumes(Workflow workflow, String wfGroupId, String waitFor, URI export,
Map<URI, Integer> objectsToRemove, URI storageUri);
/**
* Adds the export group create workflow steps.
*
* @param workflow the main workflow
* @param wfGroupId the workflow group Id, if any
* @param waitFor the id of a step on which this workflow has to wait, if any
* @param export the export group being updated
* @param objectsToAdd the map of block objects to be added
* @param storageUri the block storage system
* @return the id of the last step that was added to main workflow
*/
public String addStepsForExportGroupAddVolumes(Workflow workflow, String wfGroupId, String waitFor, URI export,
Map<URI, Integer> objectsToAdd, URI storageUri);
}