@Override
 public void discoverStorageSystem(AsyncTask[] tasks) throws ControllerException {
   try {
     ControllerServiceImpl.scheduleDiscoverJobs(
         tasks, Lock.DISCOVER_COLLECTION_LOCK, ControllerServiceImpl.DISCOVERY);
   } catch (Exception e) {
     _log.error("Problem in discoverStorageSystem due to {} ", e.getMessage());
     throw ClientControllerException.fatals.unableToScheduleDiscoverJobs(tasks, e);
   }
 }
 @Override
 public void startMonitoring(AsyncTask task, Type deviceType) throws ControllerException {
   try {
     MonitoringJob job = new MonitoringJob();
     job.setCompleter(new MonitorTaskCompleter(task));
     job.setDeviceType(deviceType);
     ControllerServiceImpl.enqueueMonitoringJob(job);
   } catch (Exception e) {
     throw ClientControllerException.fatals.unableToMonitorSMISProvider(
         task, deviceType.toString(), e);
   }
 }
 /** {@inheritDoc} */
 @Override
 public void scanStorageProviders(AsyncTask[] tasks) throws ControllerException {
   try {
     DataCollectionScanJob job = new DataCollectionScanJob();
     for (AsyncTask task : tasks) {
       job.addCompleter(new ScanTaskCompleter(task));
     }
     ControllerServiceImpl.enqueueDataCollectionJob(job);
   } catch (Exception e) {
     throw ClientControllerException.fatals.unableToScanSMISProviders(tasks, "BlockController", e);
   }
 }