/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.srdfcontroller;
import java.net.URI;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.Controller;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.model.DiscoveredSystemObject;
import com.emc.storageos.db.client.model.StorageSystem;
import com.emc.storageos.impl.AbstractDiscoveredSystemController;
import com.emc.storageos.model.block.Copy;
import com.emc.storageos.svcs.errorhandling.resources.InternalException;
import com.emc.storageos.volumecontroller.AsyncTask;
import com.emc.storageos.volumecontroller.impl.Dispatcher;
/**
* South bound API implementation - a singleton instance
* of this class services all SRDF calls.
*/
public class SRDFControllerImpl extends AbstractDiscoveredSystemController implements SRDFController {
private static final Logger log = LoggerFactory.getLogger(SRDFControllerImpl.class);
private Set<SRDFController> deviceImpl;
private Dispatcher dispatcher;
private DbClient dbClient;
public Set<SRDFController> getDeviceImpl() {
return deviceImpl;
}
public void setDeviceImpl(Set<SRDFController> deviceImpl) {
this.deviceImpl = deviceImpl;
}
public Dispatcher getDispatcher() {
return dispatcher;
}
public void setDispatcher(Dispatcher dispatcher) {
this.dispatcher = dispatcher;
}
public DbClient getDbClient() {
return dbClient;
}
public void setDbClient(DbClient dbClient) {
this.dbClient = dbClient;
}
@Override
protected Controller lookupDeviceController(DiscoveredSystemObject storageSystem) {
return deviceImpl.iterator().next();
}
private void execFS(String method, Object... args) throws InternalException {
queueTask(dbClient, StorageSystem.class, dispatcher, method, args);
}
@Override
public void connect(URI protection) throws InternalException {
// TODO Auto-generated method stub
}
@Override
public void disconnect(URI protection) throws InternalException {
// TODO Auto-generated method stub
}
@Override
public void discover(AsyncTask[] tasks) throws InternalException {
// TODO Auto-generated method stub
}
@Override
public void performProtectionOperation(URI system, Copy copy, String op, String task) throws InternalException {
execFS("performProtectionOperation", system, copy, op, task);
}
@Override
public void expandVolume(URI storage, URI pool, URI volumeId, Long size, String token) throws InternalException {
execFS("expandVolume", storage, pool, volumeId, size, token);
}
}