@Override public TaskList createFileSystems(FileSystemParam param,Project project,VirtualArray varray,VirtualPool vpool,TenantOrg tenantOrg,DataObject.Flag[] flags,List<Recommendation> recommendations,TaskList taskList,String taskId,VirtualPoolCapabilityValuesWrapper vpoolCapabilities) throws InternalException {
  List<FileShare> fileList=null;
  List<FileShare> fileShares=new ArrayList<FileShare>();
  fileList=prepareFileSystems(param,taskId,taskList,project,tenantOrg,flags,varray,vpool,recommendations,vpoolCapabilities,false);
  fileShares.addAll(fileList);
  String suggestedNativeFsId=param.getFsId() == null ? "" : param.getFsId();
  final List<FileDescriptor> fileDescriptors=prepareFileDescriptors(fileShares,vpoolCapabilities,suggestedNativeFsId);
  final FileOrchestrationController controller=getController(FileOrchestrationController.class,FileOrchestrationController.FILE_ORCHESTRATION_DEVICE);
  try {
    controller.createFileSystems(fileDescriptors,taskId);
  }
 catch (  InternalException e) {
    _log.error("Controller error when creating mirror filesystems",e);
    failFileShareCreateRequest(taskId,taskList,fileShares,e.getMessage());
    throw e;
  }
catch (  Exception e) {
    _log.error("Controller error when creating mirror filesystems",e);
    failFileShareCreateRequest(taskId,taskList,fileShares,e.getMessage());
    throw e;
  }
  return taskList;
}

@ Override public TaskList createFileSystems ( FileSystemParam param , Project project , VirtualArray varray , VirtualPool vpool , TenantOrg tenantOrg , DataObject . Flag [ ] flags , List < Recommendation > recommendations , TaskList taskList , String taskId , VirtualPoolCapabilityValuesWrapper vpoolCapabilities ) throws InternalException { List < FileShare > fileList = null ; List < FileShare > fileShares = new ArrayList < FileShare > ( ) ; fileList = prepareFileSystems ( param , taskId , taskList , project , tenantOrg , flags , varray , vpool , recommendations , vpoolCapabilities , false ) ; fileShares . addAll ( fileList ) ; String suggestedNativeFsId = param . getFsId ( ) == null ? "" : param . getFsId ( ) ; final List < FileDescriptor > fileDescriptors = prepareFileDescriptors ( fileShares , vpoolCapabilities , suggestedNativeFsId ) ; final FileOrchestrationController controller = getController ( FileOrchestrationController . class , FileOrchestrationController . FILE_ORCHESTRATION_DEVICE ) ; try { controller . createFileSystems ( fileDescriptors , taskId ) ; } catch ( InternalException e ) { _log . error ( "Controller error when creating mirror filesystems" , e ) ; failFileShareCreateRequest ( taskId , taskList , fileShares , e . getMessage ( ) ) ; throw e ; } catch ( Exception e ) { _log . error ( "Controller error when creating mirror filesystems" , e ) ; failFileShareCreateRequest ( taskId , taskList , fileShares , e . getMessage ( ) ) ; throw e ; } return taskList ; }
it take mirror recommendation and then creates source and mirror fileshare
