#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

###########################################################################
#
#  This properties file provides configuration for all Airavata Services:
#  API Server, Registry, Workflow Interpreter, GFac, Orchestrator
#
###########################################################################

###########################################################################
#  API Server Registry Configuration
###########################################################################

#for derby [AiravataJPARegistry]
registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
registry.jdbc.url=jdbc:derby://localhost:1527/experiment_catalog;create=true;user=airavata;password=airavata
# MySql database configuration
#registry.jdbc.driver=com.mysql.jdbc.Driver
#registry.jdbc.url=jdbc:mysql://localhost:3306/experiment_catalog
registry.jdbc.user=airavata
registry.jdbc.password=airavata
start.derby.server.mode=true
validationQuery=SELECT 1 from CONFIGURATION
cache.enable=true
jpa.cache.size=5000
#jpa.connection.properties=MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=60000,testWhileIdle=true,testOnBorrow=true

# Properties for default user mode
default.registry.user=admin
default.registry.password=admin
default.registry.password.hash.method=SHA
default.registry.gateway=php_reference_gateway

#ip=127.0.0.1

###########################################################################
#  Application Catalog DB Configuration
###########################################################################
#for derby [AiravataJPARegistry]
appcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
appcatalog.jdbc.url=jdbc:derby://localhost:1527/app_catalog;create=true;user=airavata;password=airavata
# MySql database configuration
#appcatalog.jdbc.driver=com.mysql.jdbc.Driver
#appcatalog.jdbc.url=jdbc:mysql://localhost:3306/app_catalog
appcatalog.jdbc.user=airavata
appcatalog.jdbc.password=airavata
appcatalog.validationQuery=SELECT 1 from CONFIGURATION

###########################################################################
#  Server module Configuration
###########################################################################

servers=apiserver,orchestrator,gfac,credentialstore
#shutdown.trategy=NONE
shutdown.trategy=SELF_TERMINATE


apiserver.server.host=localhost
apiserver.server.port=8930
apiserver.server.min.threads=50
orchestrator.server.host=localhost
orchestrator.server.port=8940
gfac.server.host=localhost
gfac.server.port=8950
orchestrator.server.min.threads=50

###########################################################################
#  Job Scheduler can send informative email messages to you about the status of your job.  
# Specify a string which consists of either the single character "n" (no mail), or one or more
#  of the characters "a" (send mail when job is aborted), "b" (send mail when job begins), 
# and "e" (send mail when job terminates).  The default is "a" if not specified.
###########################################################################

job.notification.enable=true
#Provide comma separated email ids as a string if more than one
job.notification.emailids=
job.notification.flags=abe

###########################################################################
# Credential Store module Configuration
###########################################################################
start.credential.store=false
credential.store.keystore.url=/Users/chathuri/dev/airavata/credential-store/oa4mp/airavata_sym.jks
credential.store.keystore.alias=airavata
credential.store.keystore.password=airavata
credential.store.jdbc.url=jdbc:derby://localhost:1527/experiment_catalog;create=true;user=airavata;password=airavata
credential.store.jdbc.user=airavata
credential.store.jdbc.password=airavata
credential.store.jdbc.driver=org.apache.derby.jdbc.ClientDriver
credential.store.server.host=localhost
credential.store.server.port=8960
credentialstore=org.apache.airavata.credential.store.server.CredentialStoreServer
credential.store.thrift.server.keystore=/Users/chathuri/dev/airavata/credential-store/oa4mp/airavata.jks
credential.store.thrift.server.keystore.password=airavata

notifier.enabled=false
#period in milliseconds
notifier.duration=5000

email.server=smtp.googlemail.com
email.server.port=465
email.user=airavata
email.password=xxx
email.ssl=true
email.from=airavata@apache.org

###########################################################################
# Airavata GFac MyProxy GSI credentials to access Grid Resources.
###########################################################################
#
# Security Configuration used by Airavata Generic Factory Service
#  to interact with Computational Resources.
#
gfac.thread.pool.size=50
airavata.server.thread.pool.size=50
gfac=org.apache.airavata.gfac.server.GfacServer
myproxy.server=myproxy.teragrid.org
myproxy.username=ogce
myproxy.password=
myproxy.life=3600
# XSEDE Trusted certificates can be downloaded from https://software.xsede.org/security/xsede-certs.tar.gz
trusted.cert.location=/Users/lahirugunathilake/Downloads/certificates
gfac.passive=true
# SSH PKI key pair or ssh password can be used SSH based authentication is used.
# if user specify both password authentication gets the higher preference

################# ---------- For ssh key pair authentication ------------------- ################
#public.ssh.key=/path to public key for ssh
#private.ssh.key=/path to private key file for ssh
#ssh.keypass=passphrase for the private key
#ssh.username=username for ssh connection
### Incase of password authentication. 
#ssh.password=Password for ssh connection



###########################################################################
# Airavata Workflow Interpreter Configurations
###########################################################################

#runInThread=true
#provenance=true
#provenanceWriterThreadPoolSize=20
#gfac.embedded=true
#workflowserver=org.apache.airavata.api.server.WorkflowServer
enactment.thread.pool.size=10

#to define custom workflow parser user following property
#workflow.parser=org.apache.airavata.workflow.core.parser.AiravataWorkflowParser


###########################################################################
# API Server module Configuration
###########################################################################
apiserver=org.apache.airavata.api.server.AiravataAPIServer

###########################################################################
# Workflow Server module Configuration
###########################################################################

workflowserver=org.apache.airavata.api.server.WorkflowServer

###########################################################################
# Advance configuration to change service implementations
###########################################################################
# If false, disables two phase commit when submitting jobs
TwoPhase=true
#
# Class which implemented HostScheduler interface. It will determine the which host to submit the request
#
host.scheduler=org.apache.airavata.gfac.core.scheduler.impl.SimpleHostScheduler

###########################################################################
# Monitoring module Configuration
###########################################################################

#This will be the primary monitoring tool which runs in airavata, in future there will be multiple monitoring
#mechanisms and one would be able to start a monitor
monitors=org.apache.airavata.gfac.monitor.impl.pull.qstat.QstatMonitor,org.apache.airavata.gfac.monitor.impl.LocalJobMonitor

#These properties will used to enable email base monitoring
email.based.monitor.host=imap.gmail.com
email.based.monitor.address=test@scigap.com
email.based.monitor.password=changeme
email.based.monitor.folder.name=INBOX
# either imaps or pop3
email.based.monitor.store.protocol=imaps
#These property will be used to query the email server periodically. value in milliseconds(ms).
email.based.monitoring.period=10000
###########################################################################
# AMQP Notification Configuration
###########################################################################


amqp.notification.enable=1

amqp.broker.host=localhost
amqp.broker.port=5672
amqp.broker.username=guest
amqp.broker.password=guest

amqp.sender=org.apache.airavata.wsmg.client.amqp.rabbitmq.AMQPSenderImpl
amqp.topic.sender=org.apache.airavata.wsmg.client.amqp.rabbitmq.AMQPTopicSenderImpl
amqp.broadcast.sender=org.apache.airavata.wsmg.client.amqp.rabbitmq.AMQPBroadcastSenderImpl

#,org.apache.airavata.gfac.monitor.impl.push.amqp.AMQPMonitor
#This is the amqp related configuration and this lists down the Rabbitmq host, this is an xsede specific configuration
amqp.hosts=info1.dyn.teragrid.org,info2.dyn.teragrid.org
proxy.file.path=/Users/lahirugunathilake/Downloads/x509up_u503876
connection.name=xsede
#publisher
rabbitmq.broker.url=amqp://localhost:5672

activity.listeners=org.apache.airavata.gfac.core.monitor.AiravataJobStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataTaskStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataWorkflowNodeStatusUpdator,org.apache.airavata.api.server.listener.AiravataExperimentStatusUpdator,org.apache.airavata.gfac.core.monitor.GfacInternalStatusUpdator
status.publisher=org.apache.airavata.messaging.core.impl.RabbitMQStatusPublisher
task.launch.publisher=org.apache.airavata.messaging.core.impl.RabbitMQTaskLaunchPublisher
rabbitmq.status.exchange.name=airavata_rabbitmq_exchange
rabbitmq.task.launch.exchange.name=airavata_task_launch_rabbitmq_exchange
durable.queue=false
launch.queue.name=launch.queue
cancel.queue.name=cancel.queue
activity.publisher=org.apache.airavata.messaging.core.impl.RabbitMQPublisher
rabbitmq.exchange.name=airavata_rabbitmq_exchange

###########################################################################
# Orchestrator module Configuration
###########################################################################

#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACEmbeddedJobSubmitter
job.submitter=org.apache.airavata.orchestrator.core.impl.GFACPassiveJobSubmitter
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACRPCJobSubmitter
job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
submitter.interval=10000
threadpool.size=10
start.submitter=true
embedded.mode=true
enable.validation=true
orchestrator=org.apache.airavata.orchestrator.server.OrchestratorServer

###########################################################################
# Zookeeper Server Configuration
###########################################################################

embedded.zk=true
zookeeper.server.host=localhost
zookeeper.server.port=2181
airavata-server=/api-server
zookeeper.timeout=30000
orchestrator-server=/orchestrator-server
gfac-server=/gfac-server
gfac-experiments=/gfac-experiments
gfac-server-name=gfac-node0
orchestrator-server-name=orch-node0
airavata-server-name=api-node0
