/*
* Copyright (c) 2008-2011 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller;
import java.net.URI;
import com.emc.storageos.Controller;
import com.emc.storageos.db.client.model.DiscoveredDataObject.Type;
import com.emc.storageos.svcs.errorhandling.resources.InternalException;
/**
* The main API for managing storage controller connections.
*
* URI storage: The following information will be available from storage URI lookup.
* ip: IP address of storage controller.
* credentials: Storage controller access credentials.
* profile: Storage controller access profile.
*
* URI pool: The following information will be available from pool URI lookup.
* id: Pool identifier.
* type: Pool type.
*/
public interface StorageController extends Controller {
/**
* Connect to the storage controller with the given address and credentials.
*
* @param storage URI for the storage controller.
*/
public void connectStorage(URI storage) throws InternalException;
/**
* Disconnect from the storage controller.
*
* @param storage URI of the storage controller.
*/
public void disconnectStorage(URI storage) throws InternalException;
/**
* Discover the given storageSystem, which are registered with Bourne
*
* @param tasks for discovery job.
* @throws InternalException
*/
public void discoverStorageSystem(AsyncTask[] tasks) throws InternalException;
/**
* Scan all SMI-S providers. All providers must be scanned as a single job.
*
* @param tasks List of tasks.
* @throws InternalException
*/
public void scanStorageProviders(AsyncTask[] tasks) throws InternalException;
/**
* Start monitoring from the indication source.
*
* @param task Task
* @throws InternalException
*/
public void startMonitoring(AsyncTask task, Type deviceType) throws InternalException;
}