/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.monitoring; import java.io.Serializable; import java.net.URI; import com.emc.storageos.db.client.model.DataObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.DiscoveredDataObject.Type; import com.emc.storageos.exceptions.DeviceControllerException; import com.emc.storageos.svcs.errorhandling.model.ServiceCoded; import com.emc.storageos.volumecontroller.impl.ControllerServiceImpl; import com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.DataCollectionJob; import com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.DataCollectionTaskCompleter; import com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.MonitorTaskCompleter; public class MonitoringJob extends DataCollectionJob implements Serializable { private static final long serialVersionUID = 1L; private Type _deviceType; public MonitoringJob(JobOrigin origin) { super(origin); } public MonitoringJob() { super(JobOrigin.USER_API); } private final Logger _logger = LoggerFactory.getLogger(MonitoringJob.class); /** * Will have SMIS provider's URI */ private DataCollectionTaskCompleter _completer; public void setCompleter(MonitorTaskCompleter completer) { _completer = completer; } @Override public DataCollectionTaskCompleter getCompleter() { return _completer; } /** * Gives SMIS provider's URI * * @return {@link URI} SMIS provider's URI */ public URI getId() { return _completer.getId(); } @Override public void ready(DbClient dbClient) throws DeviceControllerException { _completer.ready(dbClient); } @Override public void schedule(DbClient dbClient) { _completer.schedule(dbClient); } @Override public void error(DbClient dbClient, ServiceCoded serviceCoded) throws DeviceControllerException { _completer.error(dbClient, serviceCoded); } @Override final public void setTaskError(DbClient dbClient, ServiceCoded code) { _completer.statusError(dbClient, code); } @Override final public void setTaskReady(DbClient dbClient, String message) { _completer.statusReady(dbClient, message); } @Override final public void updateTask(DbClient dbClient, String message) { _completer.statusPending(dbClient, message); } /** * */ public String getType() { return ControllerServiceImpl.MONITORING; } public void setDeviceType(Type deviceType) { this._deviceType = deviceType; } public Type getDeviceType() { return this._deviceType; } @Override public String toString() { return String.format("Device Type :%1$s, URI :%2$s", getDeviceType(), getId().toString()); } @Override public String systemString() { // TODO Auto-generated method stub return null; } public boolean isActiveJob(DbClient dbClient) { DataObject dbObject = dbClient.queryObject(_completer.getType(), _completer.getId()); return (dbObject != null && !dbObject.getInactive()) ? true : false; } }