/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.filereplicationcontroller; import java.net.URI; import java.util.List; import java.util.Set; 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.svcs.errorhandling.resources.InternalException; import com.emc.storageos.volumecontroller.ControllerException; import com.emc.storageos.volumecontroller.impl.Dispatcher; /** * South bound API implementation - a singleton instance * of this class services all replication operation calls */ public class FileReplicationControllerImpl extends AbstractDiscoveredSystemController implements FileReplicationController { private Set<FileReplicationController> deviceImpl; private Dispatcher dispatcher; private DbClient dbClient; public Set<FileReplicationController> getDeviceImpl() { return deviceImpl; } public void setDeviceImpl(Set<FileReplicationController> 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 device) { return deviceImpl.iterator().next(); } @Override public void performNativeContinuousCopies(URI storage, URI sourceFileShare, List<URI> mirrorURIs, String opType, String opId) throws ControllerException { execFS("performNativeContinuousCopies", storage, sourceFileShare, mirrorURIs, opType, opId); } private void execFS(String method, Object... args) throws InternalException { queueTask(dbClient, StorageSystem.class, dispatcher, method, args); } }