Search in sources :

Example 1 with ResourceConfig

use of org.apache.airavata.gfac.core.config.ResourceConfig in project airavata by apache.

the class Factory method getJobManagerConfiguration.

public static JobManagerConfiguration getJobManagerConfiguration(ResourceJobManager resourceJobManager) throws GFacException {
    if (resourceJobManager == null)
        return null;
    ResourceConfig resourceConfig = Factory.getResourceConfig(resourceJobManager.getResourceJobManagerType());
    OutputParser outputParser;
    try {
        Class<? extends OutputParser> aClass = Class.forName(resourceConfig.getCommandOutputParser()).asSubclass(OutputParser.class);
        outputParser = aClass.getConstructor().newInstance();
    } catch (Exception e) {
        throw new GFacException("Error while instantiating output parser for " + resourceJobManager.getResourceJobManagerType().name());
    }
    String templateFileName = GFacUtils.getTemplateFileName(resourceJobManager.getResourceJobManagerType());
    switch(resourceJobManager.getResourceJobManagerType()) {
        case PBS:
            return new PBSJobConfiguration(templateFileName, ".pbs", resourceJobManager.getJobManagerBinPath(), resourceJobManager.getJobManagerCommands(), outputParser);
        case SLURM:
            return new SlurmJobConfiguration(templateFileName, ".slurm", resourceJobManager.getJobManagerBinPath(), resourceJobManager.getJobManagerCommands(), outputParser);
        case LSF:
            return new LSFJobConfiguration(templateFileName, ".lsf", resourceJobManager.getJobManagerBinPath(), resourceJobManager.getJobManagerCommands(), outputParser);
        case UGE:
            return new UGEJobConfiguration(templateFileName, ".pbs", resourceJobManager.getJobManagerBinPath(), resourceJobManager.getJobManagerCommands(), outputParser);
        case FORK:
            return new ForkJobConfiguration(templateFileName, ".sh", resourceJobManager.getJobManagerBinPath(), resourceJobManager.getJobManagerCommands(), outputParser);
        // We don't have a job configuration manager for CLOUD type
        default:
            return null;
    }
}
Also used : LSFJobConfiguration(org.apache.airavata.gfac.impl.job.LSFJobConfiguration) GFacException(org.apache.airavata.gfac.core.GFacException) UGEJobConfiguration(org.apache.airavata.gfac.impl.job.UGEJobConfiguration) ForkJobConfiguration(org.apache.airavata.gfac.impl.job.ForkJobConfiguration) ResourceConfig(org.apache.airavata.gfac.core.config.ResourceConfig) OutputParser(org.apache.airavata.gfac.core.cluster.OutputParser) SlurmJobConfiguration(org.apache.airavata.gfac.impl.job.SlurmJobConfiguration) CredentialStoreException(org.apache.airavata.credential.store.store.CredentialStoreException) AppCatalogException(org.apache.airavata.registry.cpi.AppCatalogException) RegistryException(org.apache.airavata.registry.cpi.RegistryException) AiravataException(org.apache.airavata.common.exception.AiravataException) GFacException(org.apache.airavata.gfac.core.GFacException) ApplicationSettingsException(org.apache.airavata.common.exception.ApplicationSettingsException) PBSJobConfiguration(org.apache.airavata.gfac.impl.job.PBSJobConfiguration)

Example 2 with ResourceConfig

use of org.apache.airavata.gfac.core.config.ResourceConfig in project airavata by apache.

the class Factory method loadConfiguration.

public static void loadConfiguration() throws GFacException {
    GFacYamlConfigruation config = new GFacYamlConfigruation();
    try {
        for (JobSubmitterTaskConfig jobSubmitterTaskConfig : config.getJobSbumitters()) {
            String taskClass = jobSubmitterTaskConfig.getTaskClass();
            Class<?> aClass = Class.forName(taskClass);
            Constructor<?> constructor = aClass.getConstructor();
            JobSubmissionTask task = (JobSubmissionTask) constructor.newInstance();
            task.init(jobSubmitterTaskConfig.getProperties());
            jobSubmissionTask.put(jobSubmitterTaskConfig.getSubmissionProtocol(), task);
        }
        for (DataTransferTaskConfig dataTransferTaskConfig : config.getFileTransferTasks()) {
            String taskClass = dataTransferTaskConfig.getTaskClass();
            Class<?> aClass = Class.forName(taskClass);
            Constructor<?> constructor = aClass.getConstructor();
            Task task = (Task) constructor.newInstance();
            task.init(dataTransferTaskConfig.getProperties());
            dataMovementTask.put(dataTransferTaskConfig.getTransferProtocol(), task);
        }
        for (ResourceConfig resourceConfig : config.getResourceConfiguration()) {
            resources.put(resourceConfig.getJobManagerType(), resourceConfig);
        }
    } catch (Exception e) {
        throw new GFacException("Gfac config issue", e);
    }
    sessionCache = CacheBuilder.newBuilder().expireAfterAccess(ServerSettings.getSessionCacheAccessTimeout(), TimeUnit.MINUTES).removalListener((RemovalListener<String, Session>) removalNotification -> {
        if (removalNotification.getValue().isConnected()) {
            log.info("Disconnecting ssh session with key: " + removalNotification.getKey());
            removalNotification.getValue().disconnect();
        }
        log.info("Removed ssh session with key: " + removalNotification.getKey());
    }).build();
}
Also used : JobSubmitterTaskConfig(org.apache.airavata.gfac.core.config.JobSubmitterTaskConfig) JobManagerConfiguration(org.apache.airavata.gfac.core.JobManagerConfiguration) ArchiveTask(org.apache.airavata.gfac.impl.task.ArchiveTask) ExperimentCatalog(org.apache.airavata.registry.cpi.ExperimentCatalog) JobMonitor(org.apache.airavata.gfac.core.monitor.JobMonitor) LoggerFactory(org.slf4j.LoggerFactory) CancelRequestWatcherImpl(org.apache.airavata.gfac.impl.watcher.CancelRequestWatcherImpl) ResourceJobManagerType(org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType) Credential(org.apache.airavata.credential.store.credential.Credential) ServerSettings(org.apache.airavata.common.utils.ServerSettings) Publisher(org.apache.airavata.messaging.core.Publisher) Map(java.util.Map) CredentialStoreException(org.apache.airavata.credential.store.store.CredentialStoreException) SlurmJobConfiguration(org.apache.airavata.gfac.impl.job.SlurmJobConfiguration) MessagingFactory(org.apache.airavata.messaging.core.MessagingFactory) AppCatalogException(org.apache.airavata.registry.cpi.AppCatalogException) ProcessContext(org.apache.airavata.gfac.core.context.ProcessContext) SSHKeyAuthentication(org.apache.airavata.gfac.core.authentication.SSHKeyAuthentication) RabbitMQPublisher(org.apache.airavata.messaging.core.impl.RabbitMQPublisher) UUID(java.util.UUID) HostScheduler(org.apache.airavata.gfac.core.scheduler.HostScheduler) RedeliveryRequestWatcherImpl(org.apache.airavata.gfac.impl.watcher.RedeliveryRequestWatcherImpl) MessageHandler(org.apache.airavata.messaging.core.MessageHandler) AppCatalog(org.apache.airavata.registry.cpi.AppCatalog) List(java.util.List) AuroraJobMonitor(org.apache.airavata.gfac.monitor.cloud.AuroraJobMonitor) CuratorFramework(org.apache.curator.framework.CuratorFramework) RetryPolicy(org.apache.curator.RetryPolicy) RedeliveryRequestWatcher(org.apache.airavata.gfac.core.watcher.RedeliveryRequestWatcher) CacheBuilder(com.google.common.cache.CacheBuilder) SSHCredential(org.apache.airavata.credential.store.credential.impl.ssh.SSHCredential) DataTransferTaskConfig(org.apache.airavata.gfac.core.config.DataTransferTaskConfig) JobSubmitterTaskConfig(org.apache.airavata.gfac.core.config.JobSubmitterTaskConfig) Task(org.apache.airavata.gfac.core.task.Task) CuratorFrameworkFactory(org.apache.curator.framework.CuratorFrameworkFactory) ForkJobConfiguration(org.apache.airavata.gfac.impl.job.ForkJobConfiguration) PBSJobConfiguration(org.apache.airavata.gfac.impl.job.PBSJobConfiguration) Type(org.apache.airavata.messaging.core.Type) DataMovementProtocol(org.apache.airavata.model.data.movement.DataMovementProtocol) HashMap(java.util.HashMap) UGEJobConfiguration(org.apache.airavata.gfac.impl.job.UGEJobConfiguration) Constructor(java.lang.reflect.Constructor) CancelRequestWatcher(org.apache.airavata.gfac.core.watcher.CancelRequestWatcher) ArrayList(java.util.ArrayList) ExponentialBackoffRetry(org.apache.curator.retry.ExponentialBackoffRetry) CredentialReader(org.apache.airavata.credential.store.store.CredentialReader) ResourceJobManager(org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager) JobSubmissionTask(org.apache.airavata.gfac.core.task.JobSubmissionTask) RegistryException(org.apache.airavata.registry.cpi.RegistryException) MonitorMode(org.apache.airavata.model.appcatalog.computeresource.MonitorMode) AiravataException(org.apache.airavata.common.exception.AiravataException) GFacUtils(org.apache.airavata.gfac.core.GFacUtils) LSFJobConfiguration(org.apache.airavata.gfac.impl.job.LSFJobConfiguration) RegistryFactory(org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory) ResourceConfig(org.apache.airavata.gfac.core.config.ResourceConfig) Logger(org.slf4j.Logger) GFacException(org.apache.airavata.gfac.core.GFacException) RemoteCluster(org.apache.airavata.gfac.core.cluster.RemoteCluster) GFacYamlConfigruation(org.apache.airavata.gfac.core.config.GFacYamlConfigruation) JobSubmissionProtocol(org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol) EmailBasedMonitor(org.apache.airavata.gfac.monitor.email.EmailBasedMonitor) TimeUnit(java.util.concurrent.TimeUnit) AuthenticationInfo(org.apache.airavata.gfac.core.authentication.AuthenticationInfo) GFacContext(org.apache.airavata.gfac.core.context.GFacContext) GFacEngine(org.apache.airavata.gfac.core.GFacEngine) RemovalListener(com.google.common.cache.RemovalListener) Cache(com.google.common.cache.Cache) ApplicationSettingsException(org.apache.airavata.common.exception.ApplicationSettingsException) OutputParser(org.apache.airavata.gfac.core.cluster.OutputParser) ServerInfo(org.apache.airavata.gfac.core.cluster.ServerInfo) com.jcraft.jsch(com.jcraft.jsch) Subscriber(org.apache.airavata.messaging.core.Subscriber) ArchiveTask(org.apache.airavata.gfac.impl.task.ArchiveTask) Task(org.apache.airavata.gfac.core.task.Task) JobSubmissionTask(org.apache.airavata.gfac.core.task.JobSubmissionTask) CredentialStoreException(org.apache.airavata.credential.store.store.CredentialStoreException) AppCatalogException(org.apache.airavata.registry.cpi.AppCatalogException) RegistryException(org.apache.airavata.registry.cpi.RegistryException) AiravataException(org.apache.airavata.common.exception.AiravataException) GFacException(org.apache.airavata.gfac.core.GFacException) ApplicationSettingsException(org.apache.airavata.common.exception.ApplicationSettingsException) GFacException(org.apache.airavata.gfac.core.GFacException) JobSubmissionTask(org.apache.airavata.gfac.core.task.JobSubmissionTask) ResourceConfig(org.apache.airavata.gfac.core.config.ResourceConfig) DataTransferTaskConfig(org.apache.airavata.gfac.core.config.DataTransferTaskConfig) GFacYamlConfigruation(org.apache.airavata.gfac.core.config.GFacYamlConfigruation)

Example 3 with ResourceConfig

use of org.apache.airavata.gfac.core.config.ResourceConfig in project airavata by apache.

the class EmailBasedMonitor method populateAddressAndParserMap.

private void populateAddressAndParserMap(Map<ResourceJobManagerType, ResourceConfig> resourceConfigs) throws AiravataException {
    for (Map.Entry<ResourceJobManagerType, ResourceConfig> resourceConfigEntry : resourceConfigs.entrySet()) {
        ResourceJobManagerType type = resourceConfigEntry.getKey();
        ResourceConfig config = resourceConfigEntry.getValue();
        List<String> resourceEmailAddresses = config.getResourceEmailAddresses();
        if (resourceEmailAddresses != null && !resourceEmailAddresses.isEmpty()) {
            for (String resourceEmailAddress : resourceEmailAddresses) {
                addressMap.put(resourceEmailAddress, type);
            }
            try {
                Class<? extends EmailParser> emailParserClass = Class.forName(config.getEmailParser()).asSubclass(EmailParser.class);
                EmailParser emailParser = emailParserClass.getConstructor().newInstance();
                emailParserMap.put(type, emailParser);
            } catch (Exception e) {
                throw new AiravataException("Error while instantiation email parsers", e);
            }
        }
    }
}
Also used : ResourceJobManagerType(org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType) EmailParser(org.apache.airavata.gfac.core.monitor.EmailParser) ResourceConfig(org.apache.airavata.gfac.core.config.ResourceConfig) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) MessagingException(javax.mail.MessagingException) AiravataException(org.apache.airavata.common.exception.AiravataException) GFacException(org.apache.airavata.gfac.core.GFacException) AiravataException(org.apache.airavata.common.exception.AiravataException)

Aggregations

AiravataException (org.apache.airavata.common.exception.AiravataException)3 GFacException (org.apache.airavata.gfac.core.GFacException)3 ResourceConfig (org.apache.airavata.gfac.core.config.ResourceConfig)3 ApplicationSettingsException (org.apache.airavata.common.exception.ApplicationSettingsException)2 CredentialStoreException (org.apache.airavata.credential.store.store.CredentialStoreException)2 OutputParser (org.apache.airavata.gfac.core.cluster.OutputParser)2 ForkJobConfiguration (org.apache.airavata.gfac.impl.job.ForkJobConfiguration)2 LSFJobConfiguration (org.apache.airavata.gfac.impl.job.LSFJobConfiguration)2 PBSJobConfiguration (org.apache.airavata.gfac.impl.job.PBSJobConfiguration)2 SlurmJobConfiguration (org.apache.airavata.gfac.impl.job.SlurmJobConfiguration)2 UGEJobConfiguration (org.apache.airavata.gfac.impl.job.UGEJobConfiguration)2 AppCatalogException (org.apache.airavata.registry.cpi.AppCatalogException)2 RegistryException (org.apache.airavata.registry.cpi.RegistryException)2 Cache (com.google.common.cache.Cache)1 CacheBuilder (com.google.common.cache.CacheBuilder)1 RemovalListener (com.google.common.cache.RemovalListener)1 com.jcraft.jsch (com.jcraft.jsch)1 Constructor (java.lang.reflect.Constructor)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1