package org.dcache.services.info.gathers.srm;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import dmg.cells.nucleus.CellPath;
import dmg.cells.nucleus.EnvironmentAware;
import dmg.cells.nucleus.Environments;
import dmg.cells.nucleus.UOID;
import org.dcache.services.info.base.StateExhibitor;
import org.dcache.services.info.base.StateUpdateManager;
import org.dcache.services.info.gathers.DgaFactoryService;
import org.dcache.services.info.gathers.MessageMetadataRepository;
import org.dcache.services.info.gathers.MessageSender;
import org.dcache.services.info.gathers.Schedulable;
import static org.dcache.services.info.Configuration.PROPERTY_NAME_SERVICE_SPACEMANAGER;
/**
* This class provides monitoring activity for SpaceManager
*
* @author Paul Millar <paul.millar@desy.de>
*/
public class SrmDgaFactoryService implements DgaFactoryService, EnvironmentAware
{
private CellPath _spacemanager;
@Override
public Set<Schedulable> createDgas(StateExhibitor exhibitor, MessageSender sender,
StateUpdateManager sum, MessageMetadataRepository<UOID> msgMetaRepo)
{
Set<Schedulable> activity = new HashSet<>();
// We don't use LinkgroupListDga as it provides the wrong information, and isn't needed as
// LinkgroupDetailsDga (mistakenly) provides all information about all linkgroups.
//addActivity(new LinkgroupListDga(60));
activity.add(new LinkgroupDetailsDga(_spacemanager, sender, 300)); // every five minutes, as this may be a heavy-weight operation.
activity.add(new SrmSpaceDetailsDga(_spacemanager, sender, 300)); // every five minutes, as this may be a heavy-weight operation.
return activity;
}
@Override
public void setEnvironment(Map<String, Object> environment)
{
_spacemanager = new CellPath(Environments.getValue(environment, PROPERTY_NAME_SERVICE_SPACEMANAGER));
}
}